Kondisi:
- Aplikasi n8n dijalankan oleh pengguna biasa,
untukai
, yang dipasang pada rumahnya, dan tidak memiliki haksudo
. - NodeJS dipasang pada
/home/untukai/app/node2216/
. - n8n dipasang menggunakan metode npm dan menggunakan database PostgreSQL
user1
adalah nama pengguna yang memiliki hak sudo
user1
login ke postgresql
user1$ sudo -u postgres psql
Buat user, database dan berikan hak ke user yang bersesuaian.
CREATE DATABASE n8n;
CREATE USER n8n WITH PASSWORD 'password_n8n';
GRANT ALL PRIVILEGES ON DATABASE n8n TO n8n;
-- terhubung dulu ke database n8n
\c n8n;
GRANT CREATE ON SCHEMA public TO n8n;
Buat direktori untuk meletakkan unit systemd dan log:
user1$ sudo mkdir -p /usr/local/lib/systemd/system/n8n.service.d/
user1$ sudo mkdir -p /usr/local/log/n8n
user1$ sudo chown -R untukai:untukai /usr/local/log/n8n
user1
membuat berkas /usr/local/lib/systemd/system/n8n.service.d/local.conf
untuk meletakkan isian environment:
[Service]
Environment="PATH=/home/untukai/app/node2216/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Environment="N8N_USER_FOLDER=/home/untukai"
Environment="N8N_VERSION_NOTIFICATIONS_ENABLED=false"
Environment="DB_POSTGRESDB_HOST=localhost"
Environment="DB_TYPE=postgresdb"
Environment="DB_POSTGRESDB_DATABASE=n8n"
Environment="DB_POSTGRESDB_SCHEMA=public"
Environment="DB_POSTGRESDB_USER=n8n"
Environment="DB_POSTGRESDB_PASSWORD=password_n8n"
Environment="GENERIC_TIMEZONE='Asia/Jakarta'"
Environment="TZ='Asia/Jakarta'"
Environment="N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=false"
Environment="N8N_ENCRYPTION_KEY='nhspbfoJR55cFjc5C/Xmv2aqJiX/OQ7H'"
Environment="N8N_LOG_LEVEL=info"
Environment="N8N_LOG_OUTPUT=file"
Environment="N8N_LOG_FILE_LOCATION=/usr/local/log/n8n/n8n.log"
Agar hanya bisa dilihat oleh user tertentu, karena berisikan password:
user1$ sudo chown untukai:untukai /usr/local/lib/systemd/system/n8n.service.d/local.conf
user1$ sudo chmod 700 /usr/local/lib/systemd/system/n8n.service.d/local.conf
user1
membuat berkas unit systemd /usr/local/lib/systemd/system/n8n.service
:
[Unit]
Description=n8n - Easily automate tasks across different services. n8n.io
After=network.target
[Service]
Type=simple
User=untukai
Group=untukai
ExecStart=/home/untukai/app/node2216/bin/n8n start
Restart=on-failure
[Install]
WantedBy=multi-user.target
Tes systemd:
#reload daftar service
user1$ sudo systemctl daemon-reload
#hidupkan n8n
user1$ sudo systemctl start n8n
#cek status n8n
user1$ sudo systemctl status n8n
#agar otomatis aktif setelah PC restart
user1$ sudo systemctl enable n8n