# Gogs

_The lightweigth github clone_


## Resources

Use command `./gogs help` to list gogs commands.

[Official Gogs documentation](https://gogs.io/docs)

## PostgreSQL setup

### Create gogs user

`$ sudo -u postgres psql`

`postgres=# CREATE ROLE gogs_app WITH CREATEDB LOGIN ENCRYPTED PASSWORD 'VerySecretPassword';`

### Create gogs database

`postgres=# CREATE DATABASE gogs_db OWNER gogs_app;`

Check database creation : `postgres=# \l`

## Gogs unix user setup

Create _gituser_ :
`$ sudo adduser gituser`

## Start gogs

### Install binaries

The binary of gogs is unziped in `/home/gituser/`

[Download gogs binaries](https://gogs.io/docs/installation/install_from_binary)

### Manually start gogs

Please launch gogs as gituser.

`$ sudo su gituser`

`$ /home/gituser/gogs/gogs web`

### Automate gogs start when computer boots

Find the script to start gogs programmatically in `Install/Templates/startgogs` in this repository. Put at the root of your gogs installation. Then, as _gituser_ :

`$ crontab -e`

And add the line : `@reboot /home/gituser/gogs/startgogs`

### Configure Gogs

When you start Gogs for the first time, Gogs shows a landing page when you can configure your installation.

Then, if you want to tweak your installation, you can do so by modifying the file `custom/conf/app.ini`. For example, you can disable registration by modifying this line to `DISABLE_REGISTRATION   = true`. Then restart the server to reload configuration changes.

## Use ssh

### Add ssh key

Use the gui to add the public ssh key. Go to settings.

### Repository url

Example of repository url using SSH :

`ssh://gituser@192.168.1.35:6666/DricomDragon/CodingGameSolver.git`

## Migrate

### Backup

Gogs natively manages backups. Prefer to use gogs tools instead of _squared wheels_.

`$ ./gogs backup --help`

`$ ./gogs restore --help`

**Beware** : please ensure that the user `gogs_app` has the same password on both instances ! You can change the password after the migration by using `ALTER ROLE gogs_app ENCRYPTED PASSWORD 'NewPassword';` and by changing the db password in `gogs/custom/conf/app.ini`.

Example :
```sh
sudo -u gituser /home/gituser/gogs/gogs backup --target /home/gituser/ ;
sudo mv /home/gituser/gogs-backup-2* /home/jovian/Local/Backup/Gogs/ ;
sudo chown jovian:jovian /home/jovian/Local/Backup/Gogs/gogs-backup-2*
```

### Repositories

`/home/gituser/gogs/gogs-repositories/`

### Gogs configuration

Your previous installation is marked as old :

`$ mv gogs gogs_old`

Three folders matter :

`$ cp -R gogs_old/{custom,data,log} gogs`

### Database

Backup the `gogs_db` from PostgreSQL.
