Learn How To Setup Gogs on Debian 9 or Ubuntu 16.04
Table of Contents
- Setup the Database
- Setup the Reverse Proxy
- Install Gogs
- Initial Configuration
- Only Allow HTTP(S) Access Through Nginx
If you are using a different system, please check our other tutorials.
Gogs is a painless self-hosted Git service.
This guide uses PostgreSQL for the database and Nginx as a reverse proxy. After following this guide, you will be able to access the Gogs web interface through HTTP
and the hosted git repositories through HTTP
and SSH
. HTTPS
access can be added by extending the Nginx configuration.
https://www.itweb.services/tutorials/linux-guides/how-to-use-sudo-on-debian-centos-and-freebsd”>non-root sudo user.
Setup the Database
This guide uses PostgreSQL. You can alternatively use MySQL/MariaDB, SQLite3, MSSQL, or TiDB.
Install PostgreSQL.
sudo apt-get install -y postgresql
Create the user in which Gogs will connect to the database. This will prompt you to create a password for that user. This password will be entered into Gog’s configuration later.
sudo -u postgres createuser gogs -P
Create the Gogs database.
sudo -u postgres createdb gogs -O gogs -E UTF8
Setup the Reverse Proxy
This guide uses Nginx as a reverse proxy. You can alternatively use another HTTP
server that can act as a reverse proxy such as Apache or Caddy.
Install Nginx.
sudo apt-get install -y nginx
Edit /etc/nginx/sites-enabled/default
.
sudo nano /etc/nginx/sites-enabled/default
Find the following lines.
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
Change them to this.
location / {
proxy_pass http://127.0.0.1:3000;
}
Reload Nginx to use the new configuration.
sudo systemctl reload nginx
Install Gogs
First, make sure git
is installed.
sudo apt-get install -y git
Then create the user Gogs will run as and which will be used for SSH git access.
sudo useradd -m git
Next, download and unpack the Gogs release for your architecture.
For 64-bit systems.
sudo -u git sh -c "curl https://dl.gogs.io/0.11.29/linux_amd64.tar.gz | tar -xz -C /home/git/"
For 32-bit systems.
sudo -u git sh -c "curl https://dl.gogs.io/0.11.29/linux_386.tar.gz | tar -xz -C /home/git/"
Setup Gogs to run on boot.
sudo cp /home/git/gogs/scripts/systemd/gogs.service /etc/systemd/system
sudo systemctl enable gogs
Start Gogs.
sudo systemctl start gogs
This is the only time you will need to start Gogs this way.
Initial Configuration
Go to http://example.com
in your web browser. You will see: Install Steps For First-time Run
Change the following settings.
Database Type: PostgreSQL
User: gogs
Password: (password you created earlier)
Domain: example.com
Application URL: http://example.com/
You might want to set the Application Name
, the Email Service Settings
, and Server and Other Services Settings
. All the settings can be changed later by editing /home/git/gogs/custom/conf/app.ini
.
Click Install Gogs
.
You will be redirected to a sign-in page. Sign up
a new user now.
Only Allow HTTP(S) Access Through Nginx
This is mostly useful when using Nginx to terminate HTTPS.
Add HTTP_ADDR = 127.0.0.1
to the [server]
section of /home/git/gogs/custom/conf/app.ini
.
sudo -u git nano /home/git/gogs/custom/conf/app.ini
After this change, the [server]
section will look something like the following.
[server]
DOMAIN = example.com
HTTP_ADDR = 127.0.0.1
HTTP_PORT = 3000
ROOT_URL = http://example.com/
DISABLE_SSH = false
SSH_PORT = 22
START_SSH_SERVER = false
OFFLINE_MODE = false
Restart Gogs to use the updated configuration.
sudo systemctl restart gogs
Need help?
Do you need help setting up this on your own service?
Please contact us and we’ll provide you the best possible quote!