Deployn

Crater auf Synology

Crater auf Synology NAS installieren. Das ist ein Programm um Ausgaben und Zahlungen verfolgen und Rechnungen zu erstellen.

Crater auf Synology-heroimage

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

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

Ich fĂŒge diesen Nutzer in die Docker-Gruppe ein. 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

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

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 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

  • 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

Ich verlasse danach das Terminal.

exit

Außerdem schalte ich SSH wieder aus. 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

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

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


Diese Website verwendet Cookies. Diese sind notwendig, um die FunktionalitÀt der Website zu gewÀhrleisten. Weitere Informationen finden Sie in der DatenschutzerklÀrung