diff --git a/README.md b/README.md index cded690..9a71df1 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ A web-hosting control panel written in Go. -*__Note:__ This software currently only runs on Debian based Linux systems.* +*__Note:__ This software currently only runs on Linux systems.* ## Stack @@ -43,3 +43,88 @@ go build gpanel.go # Execute binary as root (root access is needed for functions within the system package) sudo ./gpanel ``` + +## Installation + +#### Requirements + +- Linux + - adduser command (already installed on most debian-based Linux systems) + - deluser command (already installed on most debian-based linux systems) + - ssh-keygen command (already installed on most debian-based linux systems) + - openssh-server installed (installation guide below) + - golang (installation guide below) +- OSX + - Currently there is no support for OSX, but it is planned for the future. +----------------------------------- + + +#### Installing Golang + +1. sudo apt-get purge golang* +2. Download latest version from https://www.golang.org/dl/ +3. sudo tar -C /usr/local -xzf go[VERSION].[OS]-[ARCH].tar.gz +4. For system-wide installation (reccommended) + a. vim /etc/profile + b. Add "export PATH=$PATH:/usr/local/go/bin" +5. For local installation + a. If ~/.profile doesn't exist then create it (touch ~/.profile) + b. Add "export PATH=$PATH:/usr/local/go/bin" to said file +6. Logout and login for changes to /etc/profile or ~/.profile to take effect +7. mkdir ~/go && mkdir ~/go/bin && mkdir ~/go/src && mkdir ~/go/pkg +8. GOROOT=~/go + + +#### Installing openssh-server + +1. sudo apt-get install openssh-server +2. sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default +3. sudo vim /etc/ssh/sshd_config +4. Uncomment (no # before line) and/or set the following lines in /etc/ssh/sshd_config + - PermitRootLogin no + - AuthorizedKeysFile %h/.ssh/authorized_keys + - PasswordAuthentication no + - PermitEmptyPasswords no + - RSAAuthentication yes + - PubkeyAuthentication yes +5. sudo systemctl restart ssh + + +#### Creating the Host Key-pair + +1. ssh-keygen -t rsa -N "PASSWORD" -f ~/.ssh/id_rsa [change PASSWORD] + + +#### .ssh Folder and Files Permissions Reference + +1. To check permissions + a. cd ~/.ssh + b. ls -l -a (look at ls -l -a dump below) +2. To change permissions + a. chmod [PERMISSIONS NUMBER] [FILE] +3. To change ownership + a. chown [USER]: [FILE] + +.ssh [700 && owned by correct user] +    id_rsa [600 && owned by correct user] +    id_rsa.pub [644 && owned by correct user] +    authorized_keys [644 && owned by correct user] +    known_hosts [644 && owned by the correct user] + +Correct output of ls -l -a of ~/.ssh +```shell +drwx------ 2 root root 4096 Jan 17 14:49 . +drwx------ 7 root root 4096 Jan 17 14:42 .. +-rw-r--r-- 1 root root 0 Jan 17 14:49 authorized_keys +-rw------- 1 root root 1766 Jan 17 14:43 id_rsa +-rw-r--r-- 1 root root 401 Jan 17 14:43 id_rsa.pub +-rw-r--r-- 1 root root 444 Oct 10 2016 known_hosts +``` + + +#### Installing and Running gPanel + +1. go get github.com/Ennovar/gPanel +2. cd ~/go/src/github.com/Ennovar/gPanel +3. go build gpanel.go +4. sudo ./gpanel \ No newline at end of file