HomeBlogÜber

Crater auf Synology

Von Jewgeni
Kategorie: Homeserver
April 09, 2022
3 Minuten
Crater auf Synology

Inhaltsverzeichnis

01
Crater
02
Voraussetzungen
03
Vorbereitung
04
Crater Download
05
Crater Installation
06
Backup

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.

Gruppe für Docker einrichten
Gruppe für Docker einrichten

Und ich erstelle einen neuen Benutzer, der am Ende die Rechte am Crater Container haben soll.

Neuen Benutzer einrichten
Neuen Benutzer einrichten

Ich füge diesen Nutzer in die Docker-Gruppe ein.

Nutzer in die Docker Gruppe hinzufügen
Nutzer in die Docker Gruppe hinzufügen

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.

Berechtigung
Berechtigung

Ich setze auch den Haken, dass es für Unterordner gelten soll.

Git Server

Ich installiere mir den Git Server aus dem Paket Zentrum.

Git Server installieren
Git Server installieren

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-Dienst aktivieren
SSH-Dienst aktivieren

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

.env in Vim
.env in Vim

  • 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

Crater Installation
Crater Installation

Ich verlasse danach das Terminal.

exit

Außerdem schalte ich SSH wieder aus.

SSH-Dienst ausschalten
SSH-Dienst ausschalten

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.

Cloud Sync
Cloud Sync

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.

Cloud Sync Aufgabe
Cloud Sync Aufgabe

Bitte die Kommentarfunktion nutzen bei Fragen / Verbesserungsvorschlägen / Kritik usw.


Tags

#anleitung#crater#docker#homeserver#rechnungen#synology
Vorheriger Blogpost
Text Kombinieren / Pivotieren
Nächster Blogpost
Strom sparen mit TLP

Kategorien

Aktuelles
Excel
Finanzen
Gaming
Gatsby
Git
Google
Homeserver
Server
Tailwind
Werbung

Inhaltsverzeichnis

1
Crater
2
Voraussetzungen
3
Vorbereitung
4
Crater Download
5
Crater Installation
6
Backup

Related Posts

Strom sparen mit TLP
April 15, 2022
1 min

Links

KontaktÜber

Social Media