AFFiNe.pro는 Notion과 Miro의 대안 소프트웨어 중 하나입니다. 최근 Joplin 메모 앱이 조금 지겨워져서 obsidian이나 다른 앱 등 시놀로지 도커에 설치 가능한 프로그램을 열심히 찾고 있는 중입니다. 사용의 편의성이나 기능, 인터페이스 등은 Affine나 obsidian가 더 뛰어나지만 결국 동기화나 관리 측면에서는 아직까지 Joplin이 더 나은 것 같습니다.

Affine는 동기화를 위해서는 구독을 해야하며, 구독을 하지 않을 경우에는 로그인을 하더라도 접속된 기기의 Local에만 저장되므로, 물론 무료 10GB 저장공간과, 파일하나당 10MB의 무료 플랜이 있지만 결국 Cloud 서비스를 Affine 서버를 통해 사용해야 한다는 것은 Self-hosting의 개념에서 약간 벗어나는 개념이 아닐까라는 생각이 듭니다. 이러한 동기화 기능은 obsidian도 유사하게 유료플랜을 운용하고 있습니다. (물론 obsidian은 플러그인을 통해 완벽하지는 않지만 어느정도 동기화는 가능하다고 합니다.)

Affine는 Synology Docker Portainer Stack을 이용하여 설치를 해보고 이것 저것 만져보다가 동기화 플랜을 보고 우선 사용을 보류하기로 하였으나, Stack 설치 후 로그인이 안되는 문제를 겨우 해결(?) 했기 때문에 이를 공유하기 위해 글을 남깁니다.

Affine Synology Docker Install Information

– AFFiNe Version : v0.13.1
– Install Reference : mariushosting (https://mariushosting.com/how-to-install-affine-on-your-synology-nas/)
– Install document : How to Install Affine on Your Synology NAS – Marius Hosting.pdf

Affine Synology Docker Install Summary

– Step 1 : File Station을 이용하여 Docker에 affine 폴더를 만든다.
– Step 2 : affine 폴더 안에 storage, redis, db, config 4개의 폴더를 각각 만든다. (주의 사항 : 모든 폴더는 소문자)
– Step 3 : portainer stack으로가서 이름을 affine로 하고 아래와 같이 code를 입력한다.

version: '3.8'
services:
  affine:
    image: ghcr.io/toeverything/affine-graphql:stable
    container_name: AFFINE
    healthcheck:
      test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/3010' || exit 1
      interval: 10s
      timeout: 5s
      retries: 3
      start_period: 90s
    command:
      ['sh', '-c', 'node ./scripts/self-host-predeploy && node ./dist/index.js']
    ports:
      - 3010:3010
      - 3020:3020
    depends_on:
      redis:
        condition: service_healthy
      postgres:
        condition: service_healthy
    volumes:
      - /volume1/docker/affine/config:/root/.affine/config:rw
      - /volume1/docker/affine/storage:/root/.affine/storage:rw
    logging:
      driver: 'json-file'
      options:
        max-size: '1000m'
    restart: on-failure:5
    environment:
      - NODE_OPTIONS="--import=./scripts/register.js"
      - AFFINE_CONFIG_PATH=/root/.affine/config
      - REDIS_SERVER_HOST=redis
      - DATABASE_URL=postgres://affineuser:affinepass@postgres:5432/affine?sslmode=disable
      - NODE_ENV=production
      - AFFINE_ADMIN_EMAIL=danny@yourmail.com
      - AFFINE_ADMIN_PASSWORD=yourpassword
      - AFFINE_SERVER_HOST=abc.scmlab.com

  redis:
    image: redis:latest
    container_name: AFFINE-REDIS
    restart: on-failure:5
    volumes:
      - /volume1/docker/affine/redis:/data:rw
    healthcheck:
      test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping']
      interval: 10s
      timeout: 5s
      retries: 5
  postgres:
    image: postgres:latest
    container_name: AFFINE-DB
    restart: on-failure:5
    volumes:
      - /volume1/docker/affine/db:/var/lib/postgresql/data:rw
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "affine", "-U", "affineuser"]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      POSTGRES_DB: affine
      POSTGRES_USER: affineuser
      POSTGRES_PASSWORD: affinepass
      PGDATA: /var/lib/postgresql/data/pgdata

위의 코드에서 AFFINE_ADMIN_EMAILAFFINE_ADMIN_PASSWORD는 사용하고자 하는 메일 주소와 비밀번호를 입력하면 됩니다. 하지만 제가 설치 후 로그인을 하려고하자 로그인이 되지 않고 실패가 되었는데, 이는 Affine의 AFFINE_SERVER_HOST의 기본이 localhost이기 때문입니다. 따라서 Reverse Proxy Name을 이용하여 접속하고자 할 경우에는 AFFINE_SERVER_HOST=www.domain.com 으로 주소를 적어주셔야지만 반드시 로그인이 됩니다.

Affine가 매력적인 툴이기는 하지만 Cloud 서비스가 개선되지 않는다면 당분간 사용은 하지 않을 듯 하지만 그래도 사용을 해보고 유용한 팁이 있으면 계속 공유하도록 하겠습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다