104 lines
3.2 KiB
Markdown
104 lines
3.2 KiB
Markdown
# Setup
|
|
|
|
## Install
|
|
|
|
Setup assumes that I don't have access to the host except through Portainer.
|
|
|
|
This demonstrates that access to docker is the only real requirement to host git.limbosolutions.com
|
|
|
|
### Requirements
|
|
|
|
- Docker
|
|
_Currently hosted on an ubuntu lxc container with docker and portainer [+ information](setup-lxc.md)._
|
|
- On instructions replace githost with host ip or address
|
|
|
|
### Services (Stacks)
|
|
|
|
If portainer installed use portainer (https://githost:9443) to setup/manage services
|
|
|
|
Required environment variables (.env):
|
|
|
|
```bash
|
|
GITEA_APP_DATA-VOLUME_NAME=gitea_app_data
|
|
GITEA_DB_DATA_VOLUME_NAME=gitea_db_data
|
|
GITEA_DB-DUMPS_VOLUME_NAME=gitea_db-dumps
|
|
DEFAULT_NETWORK_NAME=gitea_default
|
|
# gitea mysql dbname
|
|
DB_NAME=??
|
|
# gitea mysql user
|
|
DB_USER=??
|
|
# gitea mysql password
|
|
DB_PASSWORD=??
|
|
# gitea mysql root password
|
|
DB_ROOT_PASSWORD=??
|
|
#git tea access port
|
|
GITEA_PORT=80
|
|
#duplicati access port
|
|
DUPLICATI_PORT=8200
|
|
```
|
|
|
|
#### Gitea
|
|
|
|
_[Docker Compose File](../docker/gitea-docker-compose.yaml)_
|
|
|
|
#### Duplicati
|
|
|
|
Requirements:
|
|
|
|
- [Duplicati Image with mySql client](https://git.limbosolutions.com/kb/duplicati/src/branch/main/docker/mysqlclient/README.md)
|
|
|
|
|
|
_[Docker Compose File](../docker/dupliticati-docker-compose.yaml)_
|
|
|
|
After starting stack:
|
|
|
|
- Access duplicati (http://ipaddress:8200) and set a password
|
|
|
|
|
|
## Restore
|
|
|
|
### Requirements
|
|
|
|
- Host setup with docker and portainer [+ information](setup.md)
|
|
|
|
### Process
|
|
|
|
1) Recreate stack gitea _[Docker Compose](../docker/docker-compose.yaml)_ removing read only restrictions on duplicati volumes
|
|
1) Check every Container is ok and running
|
|
1) Stop every Container except duplicati and portainer
|
|
_note: restore of portainer/duplicati not tested_
|
|
1) Enter Duplicati (http://hostip:8200)
|
|
1) Import Backup job (if not possible next steps must be adapted)
|
|
- Restore with permissions checked
|
|
- All Imported jobs schedules must be disabled (or disable write permissions on backup host)
|
|
1) Recreate duplicati local database (home-> backup-> advanced-> database-> Recreate (delete and repair))
|
|
1) Restore all files (except portainer and duplicati data) to original location
|
|
- If database engine is diferent do not restore db_data and check restore database **before next steps**with this processs because duplicati is running!
|
|
1) Recreate stack gitea _[Docker Compose](../docker/docker-compose.yaml)_ with original read only restrictions on duplicati volumes
|
|
1) Confirm everything is ok and running
|
|
1) Return to duplicati on schedule job add script to run-script-before-required /data/myScripts/backupdb.sh
|
|
1) Execute a backup
|
|
1) Reenable Scheduling
|
|
|
|
### Database
|
|
|
|
Only required if database data files not recovarable. (Example: diferent database engine from backup)
|
|
|
|
1) Start Portainer container (if stopped in restore process)
|
|
2) Start Database container (if stopped in restore process)
|
|
3) Enter Database container bash (by using portainer)
|
|
4) Execute:
|
|
|
|
```bash
|
|
#select a file to import
|
|
ls /db-dumps
|
|
#select a file to import
|
|
DB_FILE= "file name to import"
|
|
#
|
|
mysql --host db -uroot -p ${MYSQL_DATABASE} < /db-dumps/$DB_FILE
|
|
#enter root password (root password is in enviromnent variable ${MYSQL_ROOT_PASSWORD})
|
|
```
|
|
|
|
### network related
|
|
|
|
If ip changed. change dns servers (git.lan) and reverse proxy (git.limbosoluttions.com) to new ip. |