![](https://github.com/kentonh/gPanel/raw/master/logo/gpanel-general.jpg)
![](https://travis-ci.org/kentonh/gPanel.svg?branch=master)
gPanel
A web-hosting control panel written in Go.
Note: This software currently only runs on Linux systems.
Table of Contents
- Technology Stack
- Preview Images
- Contribution Set-up & Deployment
- Installation for Use
Technology Stack
Backend: Go (1.9.2+)
Database: Bolt
CSS Toolkit(s): Bootstrap 4 & Font Awesome
JS Toolkit(s): jQuery
Preview Images
gPanel Structure
![Image of gPanel Structure](https://user-images.githubusercontent.com/30050545/40080488-b1f90d64-5850-11e8-81c4-be95c65eca17.png)
gPanel Server
![Image of gPanel Server](https://user-images.githubusercontent.com/30050545/36277136-9d0cdffc-1255-11e8-8a33-b503087a32f8.png)
gPanel Account
![Image of gPanel Account](https://user-images.githubusercontent.com/30050545/36277135-9cf4feaa-1255-11e8-8957-9f02a9cfb7e4.png)
Contribution Set-up & Deployment
To get the repo...
# Go get the repo and append it to your $GOPATH
go get github.com/kentonh/gPanel
# Navigate to the directory (replace $GOPATH with your actual $GOPATH)
cd $GOPATH/github.com/kentonh/gPanel
To set your repo up to contribute...
# Fork the repo and add it to the list of remotes (replace your-username with your github username)
git remote add fork https://github.com/your-username/gPanel.git
# OPTIONAL: Change the names of the remotes
git remote rename origin upstream
git remote rename fork origin
To deploy...
# Build the binary
go build gpanel.go
# Execute binary as root (root access is needed for functions within the system package)
sudo ./gpanel
Installation for Use
System 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)
- php-cgi IF you want to be able to serve .php files
- OSX
-
Currently there is no support for OSX, but it is planned for the future.
Installing Golang
- sudo apt-get purge golang*
- Download latest version from https://www.golang.org/dl/
- sudo tar -C /usr/local -xzf go[VERSION].[OS]-[ARCH].tar.gz
- For system-wide installation (reccommended)
a. vim /etc/profile
b. Add "export PATH=$PATH:/usr/local/go/bin"
- 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
- Logout and login for changes to /etc/profile or ~/.profile to take effect
- mkdir ~/go && mkdir ~/go/bin && mkdir ~/go/src && mkdir ~/go/pkg
- GOROOT=~/go
Installing openssh-server
- sudo apt-get install openssh-server
- sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.default
- sudo vim /etc/ssh/sshd_config
- 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
- sudo systemctl restart ssh
Creating the Host Key-pair
- ssh-keygen -t rsa -N "PASSWORD" -f ~/.ssh/id_rsa [change PASSWORD]
.ssh Folder and Files Permissions Reference
- To check permissions
a. cd ~/.ssh
b. ls -l -a (look at ls -l -a dump below)
- To change permissions
a. chmod [PERMISSIONS NUMBER] [FILE]
- 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
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
Getting the Repository and Running
- go get github.com/kentonh/gPanel
- cd ~/go/src/github.com/kentonh/gPanel
- go build gpanel.go
- sudo ./gpanel