n8nをubuntu/Apache上にセルフホストする

Page content

うまく動かすまで大変だったの(おもにWebSocketで)メモっておく。

このサーバで試しに動かしてみる。

インストール前の準備

  • 専用のアカウント作成不要
  • user-id:1000のユーザをオーナにする必要あり
  • サブディレクトリで実施したが色々と問題が噴出したので、サブドメインに直した
$ sudo mkdir -p /opt/service/n8n <---任意の場所でOK
$ cd /opt/service/n8n
$ sudo mkdir -p n8n_data
$ sudo chown -R 1000:1000 n8n-data

n8nの導入とApache設定

/opt/serbice/n8n/docker-compose.yml

version: '3.8'
services:
  n8n:
    image: n8nio/n8n:latest
    restart: always
    ports:
      - "127.0.0.1:5678:5678"
    environment:
      - N8N_HOST=n8n.moooi.jp
      - N8N_PORT=5678
      - N8N_PROTOCOL=http
      - N8N_PATH=/
      - WEBHOOK_URL=https://n8n.moooi.jp/
      - N8N_EDITOR_BASE_URL=https://n8n.moooi.jp/
      - GENERIC_TIMEZONE=Asia/Tokyo
      - TZ=Asia/Tokyo
    volumes:
      - ./n8n_data:/home/node/.n8n
  • /n8n/はサーバ上の公開サブディレクトリxxxx(https://example.com/xxxx)とあわせる。

  • WEBHOOK_URLを指定しないとポート番号つきになってしまう

/etc/apache2/site-available/app-n8n.conf(またはvirutlhost内に記載)

<VirtualHost *:443>
    ServerName n8n.moooi.jp

    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/n8n.moooi.jp/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/n8n.moooi.jp/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyPreserveHost On
    ProxyRequests Off

    # WebSocket
    ProxyPass /rest/push ws://127.0.0.1:5678/rest/push retry=0 timeout=3600
    ProxyPassReverse /rest/push ws://127.0.0.1:5678/rest/push

    # BufferSetting
    SetEnv proxy-nokeepalive 1
    SetEnv proxy-initial-not-pooled 1

	# Apache->n8n
    ProxyPass / http://127.0.0.1:5678/ flushpackets=on
    ProxyPassReverse / http://127.0.0.1:5678/

    ErrorLog ${APACHE_LOG_DIR}/n8n_error.log
 
 </VirtualHost>
  • WebSocketが成功するまで、海外のコミュニティサイトとかみて試行錯誤、これで動いた。
$ sudo apachectl configtest
$ sudo systemctl restart apache2

Apacheを再起動

コンテナの作成と起動

$ cd /opt/service/n8n
$ sudo docker compose up -d

⠋ Container n8n        Creating 
[+] Running 1/2

ここらへん本当にDocker便利。

n8nの動作確認

ブラウザでhttps://example.com/n8n/にアクセスする

image-20260301205610191

この画面がでてきたらOK。メールアドレス、任意のパスワード(大文字、英数字を1文字以上含む)を指定して登録する

関連記事