Selfhoster / héberger AFFiNE sur Unraid en utilisant docker

8 mars, 2024·
AlexIn Tech
AlexIn Tech
· 3 min. de lecture

Selfhoster / héberger AFFiNE sur Unraid en utilisant docker

Hello ! Il y a quelques semaines j’avais publié un post qui expliquait comment héberger Monica sur Unraid en utilisant docker-compose.

Je pars donc du principe vous avez déjà installé le plugin “Docker Compose” sur votre serveur Unraid et que vous savez l’utiliser. Si ce n’est pas le cas, je vous redirige vers mon article sur l’installation de Monica.

Aujourd’hui je vais vous partager rapidement comment selfhoster / héberger AFFiNE sur Unraid en utilisant docker.

Mais premièrement, qu’est-ce que AFFiNE ?

D’après leur page GitHub, AFFiNE est une sorte de croisement entre Notion et Miro, offrant une plateforme tout-en-un open source conçue pour fusionner écriture, dessin, et planification dans un espace de travail hyper-fusionné, orienté vers la confidentialité et le local-first. Avec sa toile sans limites pour tout type de blocs — texte enrichi, notes, pages web intégrées, et bien plus. AFFiNE se positionne comme la solution ultime pour les esprits créatifs. La plateforme supporte la collaboration en temps réel, offre la possibilité de se gérer et s’héberger soi-même, et prépare l’arrivée d’une communauté de plugins pour une personnalisation poussée. AFFiNE est l’outil parfait pour ceux qui cherchent à repousser les frontières de leur productivité et créativité.

⚠️ Disclaimer : C’est eux qui le disent hein, pas moi. J’ai juste tenté de rassembler les infos et de les traduire en FR.

img

En gros, tu prends Notion, tu prends Miro, et tu les fusionnes. Voilà ça c’est moi qui le dit.

Installer AFFiNE

Alors on rentre dans le vif du sujet, pour installer AFFiNE j’ai modifié un tout petit peu leur fichier compose.yaml qui est dispo sur leur github .

Voici donc ma version et j’y ai annoté quelques commentaires afin que vous puissiez le compléter plus facilement de votre côté.

🆕 Afin de copier/coller/télécharger plus facilement ce code, j’ai créé un repository dédié aux ressources de mon blog sur github. Voici le lien du fichier docker-compose.yml de cet article :

https://github.com/AlexIn-Tech/alexin.tech_blog_ressources/blob/main/Docker/AFFiNE/docker-compose.yml

services:
  affine:
    image: ghcr.io/toeverything/affine-graphql:stable
    container_name: affine_selfhosted
    command:
      ['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js']
    ports:
    # CHANGE YOUR PORTS HERE IF NEEDED PORT:PORT_INSIDE_CONTAINER
      - '3010:3010'
      - '5555:5555'
    depends_on:
      redis:
        condition: service_healthy
      postgres:
        condition: service_healthy
    volumes:
      # CHANGE YOUR PATH HERE FOR the custom configuration
      - /mnt/user/appdata/affine-app:/root/.affine/config
      # CHANGE YOUR PATH HERE FOR blob storage
      - /mnt/user/appdata/affine-app:/root/.affine/storage
    logging:
      driver: 'json-file'
      options:
        max-size: '1000m'
    restart: unless-stopped
    environment:
      - NODE_OPTIONS="--import=./scripts/register.js"
      - AFFINE_CONFIG_PATH=/root/.affine/config
      - REDIS_SERVER_HOST=redis
      # REPLACE MY_DB_PWD_TOP_SECRET BY YOUR PWD
	- DATABASE_URL=postgres://affine:MY_DB_PWD_TOP_SECRET@postgres:5432/affine
      - NODE_ENV=production
      # REPLACE YOUR_EMAIL BY YOUR EMAIL
      - AFFINE_ADMIN_EMAIL=YOUR_EMAIL
      # REPLACE YOUR_PWD BY YOUR PWD
      - AFFINE_ADMIN_PASSWORD=YOUR_PWD
  redis:
    image: redis
    container_name: affine_redis
    restart: unless-stopped
    volumes:
    # CHANGE YOUR PATH HERE
      - /mnt/user/appdata/affine-redis:/data
    healthcheck:
      test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping']
      interval: 10s
      timeout: 5s
      retries: 5
  postgres:
    image: postgres
    container_name: affine_postgres
    restart: unless-stopped
    volumes:
    # CHANGE YOUR PATH HERE
      - /mnt/user/appdata/affine-db:/var/lib/postgresql/data
    healthcheck:
      test: ['CMD-SHELL', 'pg_isready -U affine']
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      POSTGRES_USER: affine
      # REPLACE MY_DB_PWD_TOP_SECRET BY YOUR PWD
      POSTGRES_PASSWORD: MY_DB_PWD_TOP_SECRET
      POSTGRES_DB: affine
      PGDATA: /var/lib/postgresql/data/pgdata

Bien entendu tu peux aussi faire d’autres changements si tu le souhaites, comme p.ex modifier le nom d’utilisateur postgres ou ce genre de choses.

Pour l’installation rien de plus simple => Unraid > Docker > New Stack > Edit Stack > On y ajoute le contenu de notre fichier compose.yaml et le tour est joué => Compose Up , et ça tourne !

Config dans l’app

Comme mentionné dans la documentation officielle, n’oubliez pas de vous logguer avec vos identifient puis de synchroniser votre workspace avec le “cloud”. Par cloud ils entendent “votre propre serveur” vu qu’on est en selfhost.

AFFiNE

Ce sont les identifiants que vous avez spécifier dans le fichier compose.yaml

AFFiNE

Une fois loggué il ne vous restera plus qu’à synchroniser le workspace avec “le cloud” (qui est en fait votre propre serveur) .

Voilà , Enjoy ! 😎

AlexIn Tech

AlexIn Tech
Auteurs
SysOps Engineer | IT Teacher
Ingénieur IT polyvalent avec une double spécialisation en System Engineering et en Management, AlexIn Tech enseigne aux apprenti·e·s informaticien·ne·s CFC à l’ETML 🇨🇭. Passionné par l’informatique, l’innovation et la transmission de savoir, il partage ici ses découvertes et apprentissages pour inspirer les nouvelles générations.