From 3efef96fa60529e384f5eac111dd5049a875448c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rcio=20Fernandes?= Date: Sat, 8 Oct 2022 12:49:12 +0100 Subject: [PATCH] . --- docker/docker-compose.yaml | 5 +-- documentation/issue#8.md | 12 +++++-- documentation/restore.md | 50 ----------------------------- documentation/setup-lxc.md | 39 ++++++++++++++++++++--- documentation/setup.md | 65 ++++++++++++++++++++++++++++---------- 5 files changed, 92 insertions(+), 79 deletions(-) delete mode 100644 documentation/restore.md diff --git a/docker/docker-compose.yaml b/docker/docker-compose.yaml index c0ece32..4c10655 100644 --- a/docker/docker-compose.yaml +++ b/docker/docker-compose.yaml @@ -1,8 +1,7 @@ version: "3" services: - server: + app: image: gitea/gitea:1.17 - container_name: gitea environment: - GITEA__database__DB_TYPE=mysql - GITEA__database__HOST=db:3306 @@ -19,7 +18,6 @@ services: - ${HTTP_PORT}:3000 db: image: mysql:8 - container_name: gitea_db restart: always environment: - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} @@ -31,7 +29,6 @@ services: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro duplicati: - container_name: gitea_duplicati image: duplicati-sqlclient # requirement https://git.limbosolutions.com/kb/duplicati/src/branch/main/docker/sqlclient.dockerfile environment: - DB_HOST=db diff --git a/documentation/issue#8.md b/documentation/issue#8.md index 7247581..6acefc3 100644 --- a/documentation/issue#8.md +++ b/documentation/issue#8.md @@ -1,14 +1,19 @@ -# Feature - lxc migration -https://git.limbosolutions.com/limbosolutions.com/git.limbosolutions.com/issues/8 +# Feature - Migrate to LXC container + + _[Issue 8](https://git.limbosolutions.com/limbosolutions.com/git.limbosolutions.com/issues/8)_ ## Development & Testing - [x] Create LXC Container + - [x] Documentation Scripts for Setup + - [x] Scripts for Setup - [ ] Restore Backup + - [ ] Documentation for backup and restore - [ ] Validate Backup -- [ ] Recreate System from scripts +- [x] Recreate System from scripts ## Day 1 + - [ ] Backup Current Production - [ ] Stop Current Production - [ ] Restore to new Production @@ -19,5 +24,6 @@ https://git.limbosolutions.com/limbosolutions.com/git.limbosolutions.com/issues/ - [ ] Production - Check Backup ## Day 2 + - [ ] Production - Check Daily Backup - [ ] Delete Old Production diff --git a/documentation/restore.md b/documentation/restore.md deleted file mode 100644 index ba6f382..0000000 --- a/documentation/restore.md +++ /dev/null @@ -1,50 +0,0 @@ -# Restore - -[TOC] - -## Prerequisites -- [Setup](setup.md) -- Stop all containers except duplicati - -## Storage Restore - - Duplicati web UI - Import backup job - note: disable schedules - -### DB Engine is the same - -Restore everything from backup to original folders - -### DB Engine not the same - -Restore everything except db_data folders (db_dumps must be included) - -#### Restore Database - -- Confirm if DB container is running (only db and duplicati should be running) -- Execute on duplicati bash (using portainer) - -execute: - -```bash -#check last files db-dumps -ls /git/db-dumps -#pick file to import (maybe the last one :)) -``` - -import file - -```bash -DB_FILE=filenametoimport -# by default duplicati container dont have de enviroment varible ${DB_ROOT_PASSWORD} -DB_ROOT_PASSWORD=youdbrootpassword -mysql -uroot -p'${DB_ROOT_PASSWORD}' ${DB_NAME} < /git/db-dumps/$DB_FILE -``` - -3) start all stop containers and check everyting is ok -4) Execute backup on duplicati -5) Check backup is restorable -6) Re Enable schedule backups on duplication - - - diff --git a/documentation/setup-lxc.md b/documentation/setup-lxc.md index e111ce2..a7c8cd0 100644 --- a/documentation/setup-lxc.md +++ b/documentation/setup-lxc.md @@ -1,18 +1,26 @@ -# LXD +# LXC Setup -## Setup +## Install -set variables required for setup +### Requirements + +- Currently hosted using macvlan network +- Instructions are provided for $LXC_PROFILE defined as macvlan + _For more information how to setup a lxc profile with macvlan network https://git.limbosolutions.com/kb/lxc_ + + +Replace and execute on bash ```bash -LXC_CONTAINER_NAME=samplename +LXC_CONTAINER_NAME=gitsrv01 +LXC_PROFILE=default ``` then execute ```bash ## Create ubuntu container -lxc launch ubuntu $LXC_CONTAINER_NAME +lxc launch ubuntu $LXC_CONTAINER_NAME -p $LXC_PROFILE ## Setup container for docker curl -s "https://git.limbosolutions.com/kb/lxc/raw/branch/main/scripts/lxc-config-docker-requirements.sh" | bash -s $LXC_CONTAINER_NAME @@ -24,6 +32,9 @@ lxc exec $LXC_CONTAINER_NAME -- bash -c "apt update -y && apt upgrade -y" ## Install fuse and docker on lxc container lxc exec $LXC_CONTAINER_NAME -- bash -c "curl -s \"https://git.limbosolutions.com/kb/docker/raw/branch/main/scripts/ubuntu-fuse-setup.sh\" | bash" +## Check docker for fusefs +lxc exec $LXC_CONTAINER_NAME -- bash -c "docker info" + #install Portainer lxc exec $LXC_CONTAINER_NAME -- bash -c "curl -s \"https://git.limbosolutions.com/kb/portainer/raw/branch/main/scripts/setup.sh\" | bash" @@ -31,3 +42,21 @@ lxc exec $LXC_CONTAINER_NAME -- bash -c "curl -s \"https://git.limbosolutions.co lxc exec $LXC_CONTAINER_NAME -- bash -c "ip a" ``` + +### Check instalation + +From other computer + +```bash + ping http://$LXC_CONTAINER_NAME:9000 +``` + +Access portainer (http://$LXC_CONTAINER_NAME:9000_) for inicial setup: + +- Setup administration username and password + +## Remove + +```bash + lxc rm $LXC_CONTAINER_NAME --force +``` diff --git a/documentation/setup.md b/documentation/setup.md index a8eaaa7..777eb1a 100644 --- a/documentation/setup.md +++ b/documentation/setup.md @@ -1,35 +1,40 @@ # Setup -## Requirements +## Install + +### Requirements - Docker - _Currently hosted on an ubuntu lxc container with docker and portainer [+ information](setup-lxc.md)._ -## /Services (Stacks) +### Services (Stacks) -### Gitea +If portainer installed use portainer (default https//host:9000) to setup/manage services -[Docker Compose](../docker/docker-compose.yaml) +#### Gitea -### Duplicati +- Stack Name: gitea + _[Docker Compose](../docker/docker-compose.yaml)_ -- [Docker File](https://git.limbosolutions.com/kb/duplicati/docker/sqlclient.dockerfile) -- [Docker Compose](../docker/docker-compose.yaml) -### Restore +## Restore + +### Requirements + +- Host setup with docker and portainer ./setup.md + -1) Execute Setup process 1) Check Every Container is ok and running -1) Stop Every Container (including portainer, if restoring portainer is a requirement) except duplicati -1) Enter Duplicati -1) Import Backjob (if possible, if not possible next steps must be adapted) +2) Stop Every Container except duplicati (including portainer, if restoring portainer is a requirement) + _note: restore portainer not tested_ +3) Enter Duplicati +4) Import Backup job (if not possible next steps must be adapted) - All Imported jobs schedules must be disabled (or disable write permissions on backup host) -1) Restore all files to original location - - If database engine is diferent do not restore db_data and check restore database before next steps -1) Start Container and check if everything is ok +5) Restore all files to original location + - If database engine is diferent do not restore db_data and check restore database **before next steps** +6) Start Containers and check if everything is ok -#### Database +### Database Only required of database data files not recovarable (example: diferent database engine from backup) @@ -37,3 +42,29 @@ Only required of database data files not recovarable (example: diferent database 2) Start Database container (if stopped in restore process) 3) Enter duplicati bash (by using portainer) 4) Execute Command + +````bash + +```bash +#check last files db-dumps +ls /git/db-dumps +#pick file to import (maybe the last one :)) +``` + +import file + +```bash +DB_FILE=filenametoimport +# by default duplicati container dont have de enviroment varible ${DB_ROOT_PASSWORD} +DB_ROOT_PASSWORD=youdbrootpassword +mysql -uroot -p'${DB_ROOT_PASSWORD}' ${DB_NAME} < /git/db-dumps/$DB_FILE +``` + + + + +```` +3) start all stop containers and check everyting is ok +4) Execute backup on duplicati +5) Check backup is restorable +6) Re Enable schedule backups on duplication \ No newline at end of file