Crater auf Synology
Crater auf Synology NAS installieren. Das ist ein Programm um Ausgaben und Zahlungen verfolgen und Rechnungen zu erstellen.
Inhaltsverzeichnis
Crater
Crater ist ein quelloffenes Rechnungsstellungsprogramm.
Voraussetzungen
Ich nutze ein Synology NAS. Es handelt sich um ein DS220+(Amazon Affiliate-Link) mit 10Â GB RAM(Amazon Affiliate-Link).
So viele Ressourcen sind jedoch nicht fĂŒr Crater nötig. Die Anleitung lĂ€sst sich auch analog auf andere GerĂ€te mit Docker anwenden.
Ein Reverse-Proxy-Manager im Netzwerk ist hilfreich, unabhÀngig davon, ob er sich auf einem anderen GerÀt oder dem Synology NAS befindet. Ebenso dementsprechend eine Domain.
Vorbereitung
Docker sollte auf dem NAS installiert sein. Zur Einrichtung einer Synology DiskStation habe ich hier mehr geschrieben.
Benutzer Docker
Ich richte zunĂ€chst fĂŒr eine bessere Rechteverwaltung eine Gruppe Docker ein.
Und ich erstelle einen neuen Benutzer, der am Ende die Rechte am Crater Container haben soll.
Ich fĂŒge diesen Nutzer in die Docker-Gruppe ein.
FĂŒr jeden Dienst einen einzelnen Benutzer zu erstellen, ist zu aufwendig, deshalb habe ich nur einen Docker Benutzer.
Crater Ordner
Als NÀchstes benötige ich einen Ordner, in den ich alle Dateien speichern möchte. Bei mir landet der Ordner im Freigabeordner docker. Ich merke mir den Pfad des Ordners, in meinem Fall ist es /volume1/docker/crater
und erteile alle Berechtigungen fĂŒr den Benutzer docker.
Ich setze auch den Haken, dass es fĂŒr Unterordner gelten soll.
Git Server
Ich installiere mir den Git Server aus dem Paket Zentrum.
Damit kann ich einfacher das Repository klonen.
Crater Download
Als nÀchstes möchte ich Crater herunterladen. Dazu schaue ich auf der Release-Seite nach, welche Version gerade die aktuellste ist. Jetzt gerade ist es Version 6.0.6.
Als NĂ€chstes aktiviere ich den SSH-Dienst und verbinde mich mit dem NAS ĂŒber SSH.
ssh adminbenutzername@{ip-adresse-vom-nas}
Ich bewege mich in den Crater Ordner
cd /volume1/docker/crater
Dann clone ich das Repository.
git clone -b 6.0.6 https://github.com/crater-invoice/crater --single-branch .
Jetzt dĂŒrften sich in meinem Ordner alle nötigen Dateien befinden.
Ich möchte noch die UserID vom Nutzer docker erfahren.
id -u docker
Diese Zahl merke ich mir als UserID.
Crater Installation
Als nÀchstes kopiere ich die Umgebungsdatei.
cp .env.example .env
Und dann bearbeite ich diese:
vim .env
Zu Vim: Das ist ein Texteditor, der schon standardmĂ€iĂig vorinstalliert ist. Wenn man auf i drĂŒckt, welchselt man in den Bearbeitungsmodus. Mit esc verlĂ€sst man den Bearbeitungsmodus wieder. Ist man nicht im Bearbeitungsmodus, kann man mit :q den Editor wieder verlassen, wenn man nichts geĂ€ndert hat. Hat man was geĂ€ndert, kann man entweder mit :x speichern oder mit :q! verlassen ohne zu speichern.
Crater Umgebungsvariablen
- APP_DEBUG Àndere ich auf false
- APP_LOG_LEVEL Àndere ich auf info
- APP_URL Àndere ich auf meine
https://crater.meinedomain.de
- DB_CONNECTION Àndere ich auf pgsql
- DB_PORT Àndere ich auf 5432
- DB_PASSWORD Àndere ich auf mein Passwort
- Mail Argumente sind optional
- Bei SANCTUM_STATEFUL_DOMAINS und SESSION_DOMAIN trage ich meine Domain (ohne
https://
) ein.
Wenn man localhost oder die IP-Adresse nutzt, sieht es so ungefÀhr aus:
SANCTUM_STATEFUL_DOMAINS=localhost:8080
SESSION_DOMAIN=localhost
Den Rest lasse ich so wie er ist und verlasse die Datei mit :x
.
Datenbankordner
Ich erstelle zwei neue Ordner.
mkdir docker-compose/db
mkdir docker-compose/db-backup
Postgresql hinzufĂŒgen
Dann bearbeite ich das Dockerfile und Àndere zwei Abschnitte
vim Dockerfile
[...]
# Install system dependencies
RUN apt-get update && apt-get install -y \
git \
curl \
libpng-dev \
libonig-dev \
libxml2-dev \
zip \
unzip \
libzip-dev \
libmagickwand-dev \
mariadb-client \
libpq-dev
[...]
# Install PHP extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl bcmath gd pdo_pgsql
[...]
Crater Docker Compose
NĂ€chster Schritt ist die Bearbeitung der docker-compose.yml.
vim docker-compose.yml
version: "3"
networks:
internal:
external: false
services:
app:
container_name: crater-app
build:
args:
user: docker
uid: 1234
context: ./
dockerfile: Dockerfile
image: crater-app
restart: unless-stopped
working_dir: /var/www/
volumes:
- ./:/var/www
- ./docker-compose/php/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini:rw,delegated
networks:
- internal
db:
container_name: crater-db
image: postgres:14
restart: always
volumes:
- ./docker-compose/db:/var/lib/postgresql/data:rw,delegated
environment:
POSTGRES_USER: crater
POSTGRES_PASSWORD: qwertzSMO4Yaqx7tUHhX
POSTGRES_DB: crater
networks:
- internal
db-backup:
container_name: crater-db-backup
image: postgres:14
volumes:
- ./docker-compose/db-backup:/dump
- /etc/localtime:/etc/localtime:ro
environment:
PGHOST: db
PGDATABASE: crater
PGUSER: crater
PGPASSWORD: qwertzSMO4Yaqx7tUHhX
BACKUP_NUM_KEEP: 10
BACKUP_FREQUENCY: 7d
entrypoint: |
bash -c 'bash -s <<EOF
trap "break;exit" SIGHUP SIGINT SIGTERM
sleep 2m
while /bin/true; do
pg_dump -Fc > /dump/dump_\`date +%d-%m-%Y"_"%H_%M_%S\`.psql
(ls -t /dump/dump*.psql|head -n $$BACKUP_NUM_KEEP;ls /dump/dump*.psql)|sort|uniq -u|xargs rm -- {}
sleep $$BACKUP_FREQUENCY
done
EOF'
networks:
- internal
redis:
container_name: crater-redis
image: redis
restart: unless-stopped
networks:
- internal
nginx:
image: nginx:1.17-alpine
restart: unless-stopped
ports:
- 8011:80
volumes:
- ./:/var/www
- ./docker-compose/nginx:/etc/nginx/conf.d/
networks:
- internal
cron:
build:
context: ./
dockerfile: ./docker-compose/cron.dockerfile
volumes:
- ./:/var/www
networks:
- internal
Die UID, sowie das Passwort fĂŒr die Datenbank können angepasst werden. Auch der Port kann von 8011 auf irgendwas geĂ€ndert werden. Befindet sich der Proxy Manager auf der Synology, kann man ihn auch komplett rausnehmen, sofern man nginx dem Netzwerk des Proxy Managers hinzufĂŒgt.
Danach noch sudo docker-compose up -d
ausfĂŒhren und warten.
Composer installieren
Als Letztes muss das Startskript ausgefĂŒhrt werden.
sudo ./docker-compose/setup.sh
Ich verlasse danach das Terminal.
exit
AuĂerdem schalte ich SSH wieder aus.
Crater WebGUI
Jetzt rufe ih entweder die IP-Adresse vom NAS mit Port 8011 auf oder ich richte einen Proxy Host ein.
Ich passe ein paar der Werte an.
Die Datenbank ist pgsql, Port 5432 und Host db
. Der Rest sollte sich von selbst erklÀren.
Backup
Möchte man seine Daten in der Cloud sichern, lÀsst sich das auf einer Synology DiskStation einfach bewerkstelligen. Dazu das Programm Cloud Sync aus dem Paket-Zentrum installieren.
Damit richte ich eine neue Aufgabe ein, dass mir den Ordner docker-compose/db-backup
und docker/compose/php
mit Google Drive oder Microsoft One Drive usw. synchronieiseren soll.
Bitte die Kommentarfunktion nutzen bei Fragen / VerbesserungsvorschlÀgen / Kritik usw.