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