install docker :
apt install docker.io
install docker-compose :
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose version
install GitLab self-hosted:
https://github.com/sameersbn/docker-gitlab
wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
## change host name in docker compose to your domain
docker-compose up
install nginx :
apt install nginx
configure reverse proxy :
sudo unlink /etc/nginx/sites-enabled/default
cd /etc/nginx/sites-available/
vi reverse-proxy.conf
# add this lines
server {
server_name mydomainname.com;
location / {
proxy_pass http://127.0.0.1:host-port;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
}
}
# save file and exit
sudo ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
service nginx configtest
service nginx restart
install ssl by cerbot :
sudo apt-get update
sudo apt-get install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
#renew automaticly
sudo certbot renew --dry-run
sudo crontab -e
30 3,15 * * * /usr/bin/certbot renew >> /var/log/letsencrypt/renew.log
create a backup of docker compose gitlab :
docker-compose rm -sf gitlab
docker-compose run --rm gitlab app:rake gitlab:backup:create
backupfile is available in :
/var/lib/docker/volumes/nameofdockervolume/_data/backups
restore backup :
docker-compose run --rm gitlab app:rake gitlab:backup:restore # List available backups
docker-compose run --rm gitlab app:rake gitlab:backup:restore BACKUP=1515629493_2020_12_06_13.10.0 # Choose to restore from 1515629493
make sure backup file ownership (chwon) is currently (make sure to not be root , for example you can create a backup and check that file ownership and change the ownership like that )