Self-hosted Standard Notes Proxmox LXC Container installieren – Tutorial

Self hosted Standard Notes Proxmox LXC Container installieren Tutorial

In diesem Tutorial erkläre ich Ihnen wie Sie einen Self-hosted Standard Notes Proxmox LXC Container installieren können. Dabei handelt es sich um den Standard Notes API Server und nicht um die Web App. Alternativ dazu kann ich Joplin empfehlen.

Dafür erstellen Sie zuerst einen Debian 11 LXC Container. Ich empfehle 4 Kerne, 2GB Ram und 4GB Rom.

1. Updates und Abhängigkeiten installieren

Mit folgenden Befehlen werden die benötigten Abhängigkeiten installiert.

apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt update

2. Docker installieren

Nun wird Docker installiert.

apt install docker-ce docker-compose -y

3. Self-hosted Standard Notes Proxmox LXC Container installieren

Erstellen Sie einen Ordner, in dem Sie Ihre Arbeitsdateien speichern möchten. Wir werden diesen Ordner als Arbeitsverzeichnis bezeichnen.

mkdir standardnotes
cd standardnotes

Erstellen Sie eine .env-Datei in Ihrem Arbeitsverzeichnis. Kopieren Sie dann die Beispielwerte in Ihre Datei:

touch .env
curl https://raw.githubusercontent.com/standardnotes/server/main/.env.sample > .env

Stellen Sie sicher, dass die Keys in der .env Datei ersetzt werden.

Mit folgendem Befehl können Sie ein sicheres Passwort erstellen.

openssl rand -hex 32

Und mit nano .env können Sie die .env Datei bearbeiten und die Keys ersetzen.

Kopieren Sie das LocalStack-Bootstrap-Skript und legen Sie es in Ihrem Arbeitsverzeichnis ab. Stellen Sie sicher, dass die Datei über Ausführungsberechtigungen verfügt:

curl https://raw.githubusercontent.com/standardnotes/server/main/docker/localstack_bootstrap.sh > localstack_bootstrap.sh
chmod +x localstack_bootstrap.sh

Kopieren Sie die Datei docker-compose.yml in eine Datei namens docker-compose.yml in Ihrem Arbeitsordner:

curl https://raw.githubusercontent.com/standardnotes/server/main/docker-compose.example.yml > docker-compose.yml

4. DB Passwort setzen

Ändern Sie nun das Passwort der DB. Dafür erstellen Sie wieder ein sicheres Passwort.

openssl rand -hex 12

Ersetzt werden muss das Passwort DB_PASSWORD in der .env Datei.

MYSQL_ROOT_PASSWORD und MYSQL_PASSWORD in docker-compose.yml muss das gleiche wie in der .env Datei sein.

nano .env
nano docker-compose.yml

5. Standard Notes Server starten

Mit folgendem Befehl können Sie den Server nun starten.

docker compose pull && docker compose up -d
Self hosted Standard Notes Proxmox LXC Container installieren

Wenn der Server schlussendlich gestartet wurde, können Sie sich über die App beim Server anmelden.

Geben Sie dafür die IP interne Adresse des Servers an oder allenfalls können Sie den Server auch hinter einem Reverse Proxy mit einer Subdomain verwenden.

6. Registration deaktivieren (Optional)

Falls Sie nicht möchten, dass sich weitere Personen auf Ihrem Standard Notes Server Registrieren ergänzen Sie das .env file mit folgender Zeile.

AUTH_SERVER_DISABLE_USER_REGISTRATION=true

Über ramhee 250 Artikel
Mein Name ist Ramon Heeb und das ist mein Technikmagazin. Ich liebe es Tutorials, Reviews und anderes zu schreiben und so anderen Menschen zu helfen. Ich bin seit einigen Jahren Technik-interessiert und habe technium.ch im Jahre 2019 gegründet.

2 Kommentare

  1. Hallo,
    vielen Dank für die Anleitung.
    Kannst du mal deine docker-compose.yml und .env posten?
    Bei mir kommt ständig der Fehler: standardnotes/server:5c02435ee478b893747d3f9e41062aae12d7ff10 «docker-entrypoint.sh» 58 seconds ago Restarting (1) 23 seconds ago

    Viel Grüße

    • Hallo Lenn
      das wäre mein .env File (Passwörter ersetzt)
      ######
      # DB #
      ######

      DB_HOST=db
      DB_PORT=3306
      DB_USERNAME=std_notes_user
      DB_PASSWORD=password
      DB_DATABASE=standard_notes_db
      DB_TYPE=mysql

      #########
      # CACHE #
      #########

      REDIS_PORT=6379
      REDIS_HOST=cache
      CACHE_TYPE=redis

      ########
      # KEYS #
      ########

      AUTH_JWT_SECRET=jsecret
      AUTH_SERVER_ENCRYPTION_SERVER_KEY=key
      VALET_TOKEN_SECRET=tsecret

      # disable registration
      AUTH_SERVER_DISABLE_USER_REGISTRATION=true

      Und das docker-compose.yml

      services:
      server:
      image: standardnotes/server
      env_file: .env
      container_name: server_self_hosted
      restart: unless-stopped
      ports:
      - 3000:3000
      - 3125:3104
      volumes:
      - ./logs:/var/lib/server/logs
      - ./uploads:/opt/server/packages/files/dist/uploads
      networks:
      - standardnotes_self_hosted

      localstack:
      image: localstack/localstack:3.0
      container_name: localstack_self_hosted
      expose:
      - 4566
      restart: unless-stopped
      environment:
      - SERVICES=sns,sqs
      - HOSTNAME_EXTERNAL=localstack
      - LS_LOG=warn
      volumes:
      - ./localstack_bootstrap.sh:/etc/localstack/init/ready.d/localstack_bootstrap.sh
      networks:
      - standardnotes_self_hosted

      db:
      image: mysql:8
      container_name: db_self_hosted
      environment:
      - MYSQL_DATABASE=standard_notes_db
      - MYSQL_USER=std_notes_user
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_PASSWORD=password2
      expose:
      - 3306
      restart: unless-stopped
      command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
      volumes:
      - ./data/mysql:/var/lib/mysql
      - ./data/import:/docker-entrypoint-initdb.d
      networks:
      - standardnotes_self_hosted

      cache:
      image: redis:6.0-alpine
      container_name: cache_self_hosted
      volumes:
      - ./data/redis/:/data
      expose:
      - 6379
      restart: unless-stopped
      networks:
      - standardnotes_self_hosted

      networks:
      standardnotes_self_hosted:
      name: standardnotes_self_hosted

      Lieber Gruss Ramon

Schreib einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht.


*