Driver FixRecommendedSound, Wi-Fi or graphics acting up? Check drivers firstFind missing or outdated drivers fast.Check DriversOctober DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsPC HealthRecommendedCrashes, freezes, slowdowns? Check your PC nowSpot repairable issues before they interrupt work.Check PC×
Skip to content
World desk12 min

How to Self-Host Huginn on a VPS Without Docker

A complete non-Docker Huginn deployment guide: size the VPS, install system Ruby and dependencies, configure PostgreSQL or MySQL/MariaDB, supervise workers with Foreman/runit, and secure the instance behind Nginx and HTTPS.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The supported way to run Huginn without Docker is a source installation on Debian or Ubuntu. You install the system dependencies and Ruby, create a dedicated huginn account, connect Huginn to PostgreSQL or MySQL/MariaDB, export its Foreman/runit services, and place Nginx in front for HTTP and HTTPS. Start with a dual-core VPS, keep the database private, and treat the .env file as a secret.

What this deployment looks like

Huginn is a Rails application with several cooperating processes: a web process (Puma), background workers, scheduled agents, a relational database, and supporting system services. Without Docker, those pieces run directly on the VPS. The official production layout uses system packages, a system Ruby, a dedicated Unix user, Foreman to export service definitions, runit for supervision, and Nginx as the public web server.

As an Amazon Associate I earn from qualifying purchases.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

This approach gives you normal Linux visibility: logs are files, services are supervised by the host, and database backups can use the operating system’s tooling. It also means you are responsible for patching Ruby and native libraries, renewing TLS certificates, checking disk space, and re-exporting services after certain configuration changes.

Choose the VPS size before installing

Huginn’s requirements document describes a dual-core system or VPS as the recommended starting point for a useful number of agents. With SSD storage, 0.5 GB of RAM plus 0.5 GB of swap can work relatively well for a small installation. A machine with 1 GB of RAM and 1 GB of swap is the more practical baseline when you want two Puma workers and a threaded worker. Agent count, polling frequency, browser automation, large event payloads, and additional workers all increase the requirement.

#1 Best Overall
Sale
TOZO A1 Wireless Earbuds Bluetooth 5.3 Light Weight in Ear Headphones | IPX5 Waterproof,2 Mics for AI Calls,Immersive Premium Sound Bass Headset with Charging Case,32 EQ via App Black
  • [Ultra-Lightweight Ear Buds Designed for Small Ears] Each earbud weighs only 3.7g and features a compact, ergonomic in-ear design made especially for small ears. Secure, low-profile, and comfortable for workouts, all-day wear or overnight sleeping.The ultra-slim profile sits flush in your ear with no hard edges poking or rubbing, so you can even sleep on your side without discomfort.
  • [Immersive Stereo Sound with TOZO OrigX Technology] TOZO OrigX tuning delivers clear vocals, balanced mids, and natural stereo sound for music, podcasts, and videos.
  • [Long Battery Life for Daily Use] Get up to 7 hours of playtime on a single charge, with up to 32 hours total using the charging case—ideal for workdays, commuting, and extended listening sessions.
  • [Bluetooth 5.3 & Stable Connection] Bluetooth 5.3 provides fast pairing, stable wireless performance, and reduced dropouts as you move around home or office.
  • [Deep Bass with Clear Vocals] High-performance drivers produce punchy bass while keeping vocals clean and detailed for everyday listening.
Workload or goal Starting resources What to watch
Small personal instance Two CPU cores; 0.5 GB RAM and 0.5 GB swap with SSD storage Keep agent schedules modest and monitor memory and swap activity.
Regular use with more agents Two CPU cores; 1 GB RAM and 1 GB swap This is the level documented for two Puma workers and a threaded worker; leave headroom for the database and the operating system.
Heavy polling, browser automation, or many users More CPU and RAM than the baseline Increase resources based on resident memory, queue latency, database load, and the number of concurrent workers.

Use SSD-backed storage. Huginn writes logs, temporary files, database data, and job state, so slow or nearly full disks cause failures even when CPU and memory look adequate. Select a Debian or Ubuntu release covered by the current Huginn production guide; package names, supported Ruby versions, and defaults can change.

Prepare and harden the VPS

Update the operating system

Log in initially with the provider’s administrative account, apply all updates, and reboot if the kernel or other core packages require it. Create a separate administrative user with sudo access, then use that account for routine administration rather than working as root.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Limit network exposure

  • Allow SSH only from the networks or addresses that need it, preferably with keys rather than passwords.
  • Expose Nginx for web traffic. Keep PostgreSQL or MySQL/MariaDB bound to localhost or a private network.
  • Enable the host firewall and deny unsolicited inbound traffic by default.
  • Keep service and database ports off the public internet unless a specific private-network design requires otherwise.

Huginn agents can make outbound HTTP and DNS requests. If people who are not fully trusted can create agents, route their outbound traffic through an egress proxy. That prevents an agent from using the VPS as a path to internal services or metadata endpoints.

Install the build and runtime dependencies

The production guide installs a system Ruby and the native libraries needed to compile Ruby gems and process assets. Install the documented compiler toolchain, development headers, Git, curl, Node.js/npm, Graphviz, jq, shared MIME data, logrotate, and the other packages listed for your Debian or Ubuntu release.

Use the distribution’s system Ruby for this deployment. The guide specifically warns against RVM, rbenv, and chruby in production because alternate Ruby managers can produce hard-to-diagnose path and service-environment problems. Confirm the installed versions as you go:

ruby --version
gem --version
node --version
npm --version
git --version

If a package is unavailable under the name shown in the guide, use the equivalent package for your exact distribution release and verify that the corresponding development headers and runtime libraries are present. Do not mix packages from unrelated releases merely to satisfy a version string.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Create the dedicated Huginn account and directories

Run the application as a non-login service account, not as root and not as your personal administrator. Create a disabled-login user named huginn, install the application under /home/huginn/huginn, and make that account the owner of the application tree.

Rank #2
Sale
Smart Watch for Men Women Compatible with iPhone Samsung Android Phone 1.69 inch Full Touch Screen IP68 Waterproof Bluetooh Fitness Tracker Heart Rate/Sleep Monitor (Black)
  • 【IP68 Waterproof Multifunctinal Smart Watch】Torjalph fitness activity tracker smart watch is IP68 waterproof technology ,you can wear it when swimming,handwashing,it's rain-proof which means that you perform multiple exercise modes outside without worrying about sweat or rain corroding your fitness smart watch,and this watch equipped with a 230 mAh large capacity battery magnetic charging ,and this sports activity tracker watch can be used 5-7 days If fully charged.
  • 【Larger 1.83'' Full Screen Watch & Multi-dial Selection】1.83 inch full HD color touch screen smart watch for men / women provides excellent 240*284 resolution image quality ,This Bluetooth smart watch offers a better touch experience and remarkable immersion and ,more than 200 watch faces for you to choose from App"Da Fit ", you can change the dial style according to your mood to wear keeping the world on your wrist
  • 【Accurate Activity Tracker Smart Watch 】sports watch activity tracker uses sweat and dust resistant breathable silicone strap, our Fitness Tracker Smart Watch for Android iOS Phones supports 12 sports modes,walking,running,bicycle,swimming,badminton,basketball,football,rope skipping. This bluetooth calls smart watch for men women is lightweight and stylish, bringing more convenient and relaxing sports experience while also providing more protection.
  • 【Your 24 Hour Personal Daily Health Monitor】Fitness watch for women men full touch screen IP67 waterproof bluetooth smartwatch for Android iOS Phones with heart rate blood pressure monitor multifunction Andriod smart watch with steps counter sleep monitor sports fitness watch, monitoring blood oxygen saturation allows you to understand your physical condition in real time to track fitness progress ,to know your health status in time.
  • 【More Functions Bluetooth Call Smart Watch】This fitness activity smart watch full screen for iPhone and Android phones includes a bunch of new features including:The bluetooth smart watch can hang up the phone, receive and display WhatsAPP /Text /Facebook /Twitter /Messenger reminder.Support sedentary reminder, alarm clock, stopwatch, timer,weather information,music control, remote camera control compatible with Android 5.0 and above or iOS 9.0 and above smartphones.
sudo adduser --disabled-login --gecos "" huginn
sudo install -d -o huginn -g huginn /home/huginn/huginn

The exact user-creation flags can differ between Debian and Ubuntu releases; the important properties are a dedicated UID, no interactive shell login, and ownership of the application files. The huginn account must be able to write the application’s log/ and tmp/ directories. Keep .env readable only by this account because it contains database credentials, seed credentials, mail settings, and other secrets.

Install and configure the database

The database is a first-class Huginn dependency, not an optional add-on. PostgreSQL is the documented example, while MySQL and MariaDB are also supported. Choose one engine that your team can patch, back up, and restore confidently; do not run two databases for one installation.

PostgreSQL setup

Install PostgreSQL and its client development library, then create a login role and a production database owned by that role. Use a long, unique password and keep PostgreSQL local to the VPS unless you have a private network and a specific reason to separate it.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
sudo -u postgres createuser --pwprompt huginn
sudo -u postgres createdb --owner=huginn huginn_production

The role name and database name above match the documented layout. In Huginn’s .env, set:

DATABASE_ADAPTER=postgresql
DATABASE_NAME=huginn_production
DATABASE_USERNAME=huginn
DATABASE_PASSWORD=your-long-database-password
DATABASE_HOST=localhost
DATABASE_PORT=5432

Use the variable names and any additional database settings from the current example file supplied by Huginn. If you choose MySQL or MariaDB instead, install that server’s development headers and set the adapter, host, port, database, and credentials to match that engine. Confirm that the database user can create tables and run migrations before troubleshooting Rails.

Clone Huginn and create the production configuration

Obtain the source as the service user

Switch to the huginn account and clone the official repository into /home/huginn/huginn using the repository address and branch specified by the current production guide. Keeping the checkout owned by huginn prevents later gem, asset, and log operations from creating root-owned files.

sudo -iu huginn
cd /home/huginn
git clone <the-current-official-Huginn-repository> huginn
cd /home/huginn/huginn

The angle-bracket text above is a description, not a value to paste. Copy the repository address from the current Huginn guide immediately before installation because repository branches and supported releases can change.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #3
New Bee Guitar Cable 10ft Electric Instrument Bass AMP Cord
  • [Low Noise High Fidelity] New bee guitar cord with 22AWG oxygen-free-copper center conductors provides enhanced signal transfer, the PVC insulation material and the high-density stranded copper double shield provide noise rejection for quiet operation
  • [Ideal for Choice] New bee 1/4 straight and right angle metal connectors, ensures a secure connection in any instrument, pedal, or amp jack. L shape great fro on stage guitar stands
  • [Wide Compatible] Suitable for mixer, power amplifier, microphone, effector, decoder, equalizer, electoronic organ, electric guitar, electric bass and other electronic equipments. Widely used in the installation of smart home, karaoke speaker, professional stage audio, etc
  • [Easy Disassemble] Making incidental repairs quick and easy! Very nice, flexible cable
  • [Dont Hesite to Order] 24 hours customer services and professional technology team are standing by

Create and protect .env

Copy the supplied example environment file and edit it for production:

cp .env.example .env
chmod 600 .env

At minimum, configure production Rails mode, the database values, the fully qualified domain name you will publish, and the mail settings required by your agents and user notifications. Set the initial administrator variables before seeding:

RAILS_ENV=production
SEED_USERNAME=your-admin-name
SEED_PASSWORD=your-long-initial-password

Use the exact variable names present in the checked-out .env.example; Huginn’s configuration evolves, and an obsolete name will be ignored. Restrict permissions after every edit and avoid placing the file in shell history or a publicly readable backup.

Install gems and prepare Rails

Install Ruby gems with deployment enabled and development/test groups excluded. Then create the database, run migrations, and seed the first administrator in the production environment:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
bundle config set --local deployment true
bundle config set --local without 'development test'
bundle install
RAILS_ENV=production bundle exec rake db:create
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake db:seed

If you do not provide a seed password, the seed task may generate a one-time password. Record that value securely and change it after the first login. A failed migration usually indicates a database connection, adapter, permissions, or native-library problem; fix that underlying error before rerunning the task.

Install JavaScript packages and precompile assets

Install the Node dependencies and compile Rails assets while logged in as huginn. The exact npm command follows the repository’s current lockfile and guide; do not substitute a global install that writes into system directories. Asset compilation can consume significant memory on a small VPS, so watch for the OOM killer and temporarily add swap if necessary.

Export and supervise production processes

Huginn’s checked-in Procfile defines the production process layout. The documented export task turns that layout into runit service definitions managed by Foreman. Run the export as the application account using the production environment, then inspect service status and logs before putting the instance on the public internet.

Rank #4
BSIMB 15.6" Digital Family Calendar & Chore Chart, No Subscription Fees
  • Digital Family Calendar: BSIMB digital calendar wall touch screen puts an end to your chaotic life. Designed for busy families, the digital calendar keeps you organised and in step with your family. Assign different colours and tasks to each family member to make family scheduling easier and more intuitive.
  • Easy Setup and Auto-Sync: Plug in, connect to WLAN and auto-syn your electric calendar in minutes. Digital wall calendar compatible with Google calendar, iCloud calendar, Outlook calendar, Cozi calendar and Yahoo calendar. Add events directly on the device or through the ecalendar app. Electronic calendar stays current whether you're at work or traveling—no manual updates needed.
  • All-In-One Home Assistant: Smart calendar builds habits and encourage independence with personalised chores. Display daily meal plan to reduce the daily ‘What's for dinner?’ stress. To-do lists keep track of everything you want. Turning chores into valuable achievements with stars and rewards, making life easier and more enjoyable.
  • Manage Anytime Anywhere: BSIMB electronic calendar for family stay connected with the powerful ecalendar app. Access and manage your digital wall calendar anytime, anywhere with free features like stars & rewards, photo screensaver, chore charts, meals plans, to-do lists etc. Electronic planner paid features like Magic Import tailor advanced tools for users with special needs.
  • Stay in Touch with Loved Ones: Share photos or videos from your phone to electronic wall calendar with app, instantly update your life moment, and keep in touch with your family, especially those who are far away; you can also surprise your smart calendar digital wall by sending him a wish card; it's also great for keeping tech-illiterate elders in touch with the youngsters.
RAILS_ENV=production bundle exec foreman export runit /etc/service 
  -a huginn -u huginn -l /home/huginn/huginn/log

The destination and options must match the current Huginn guide and your host’s runit layout. The important result is a separate supervised service for the web process and each worker defined by the Procfile. Verify that the generated services are running and that their log files are writable by huginn.

Re-export after configuration changes

Changing .env, Procfile, or config/puma.rb is an operational event. Export the production init script again before restarting; otherwise runit can continue using stale commands, worker counts, or environment values.

# edit .env, Procfile, or config/puma.rb first
RAILS_ENV=production bundle exec foreman export runit /etc/service 
  -a huginn -u huginn -l /home/huginn/huginn/log
sudo sv restart huginn-web
sudo sv restart huginn-schedule
sudo sv restart huginn-threaded

Service names depend on the processes defined by the checked-in Procfile. List the generated directories and restart the names that actually exist rather than assuming every optional worker is enabled.

Rotate and monitor logs

Install the logrotate configuration supplied with Huginn. Check rotation immediately, then monitor both application logs and free disk space. A full filesystem can stop database writes, prevent asset or temporary-file creation, and make a healthy process appear broken.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Put Nginx in front of Huginn

Nginx is Huginn’s officially supported web server. It terminates client connections, forwards requests to Puma, and gives you a single place to enforce TLS and request limits.

  1. Install Nginx using your distribution’s package manager.
  2. Copy the Huginn site configuration supplied by the repository into Nginx’s sites-available directory.
  3. Replace the example fully qualified domain name with the DNS name that resolves to your VPS.
  4. Enable the site with a symlink in sites-enabled. Remove the default site if it would otherwise answer for the same address.
  5. Check the configuration before reloading:
sudo nginx -t
sudo systemctl reload nginx

Run nginx -t after every change. A successful syntax test does not prove that DNS, the upstream Puma socket or port, certificates, and firewall rules are correct; test those separately from an external network.

Enable HTTPS for a public instance

Use the HTTPS version of the supplied site configuration, install a certificate and private key from a trusted certificate authority, and review the TLS settings for your Nginx version. Set FORCE_SSL=true in .env, re-export the services, and restart the affected processes before reloading Nginx. Do not enable forced HTTPS until the certificate and hostname work, or you can create a redirect loop or lock yourself out of the setup.

Validate the installation before creating agents

Validation should cover every dependency, not just whether the login page appears.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Open the configured domain over HTTPS and sign in with the seeded administrator.
  • Run Huginn’s self-check when the interface reports a problem.
  • Confirm the web service, scheduler, threaded worker, and any additional workers remain up after a restart.
  • Check that Rails can connect to the database and that migrations completed without errors.
  • Create a harmless test agent and verify that its schedule runs and produces an event.
  • Test outbound DNS and HTTP from the VPS, and verify that any required mail delivery works.
  • Confirm that logrotate runs and that old logs are removed according to policy.
  • Reboot during a maintenance window and verify that runit brings every required process back automatically.

If agents will access sensitive destinations, test the egress-proxy policy before allowing other users to create agents. A proxy that is configured only in a shell session will not necessarily apply to supervised services; place the required values in the service environment and re-export.

Backups, upgrades, and day-to-day operation

Back up the database and secrets

Back up the database on a schedule appropriate to the value of your agents and event history. Store backups away from the VPS, encrypt them, and periodically perform a restore to a separate environment. Back up the production .env file through a secrets-safe process as well; a database dump without the encryption keys, mail credentials, and application settings may not be enough to recover service.

Patch in a controlled order

Keep the OS, Ruby, native libraries, database engine, Node packages, and Huginn checkout patched. Read the current production guide before changing distribution or Ruby versions. Take a database backup, record the current commit and configuration, install dependencies, run migrations, precompile assets, re-export services, and then test login and a representative agent. Never upgrade the database or application for the first time on the only copy of your data.

Watch the signals that indicate growth

  • Memory pressure, swap growth, and OOM-killer messages indicate that workers or agent payloads exceed available RAM.
  • Long job queues or missed schedules indicate insufficient worker capacity, database contention, or slow outbound services.
  • High disk usage usually comes from logs, database growth, or temporary files; fix retention and capacity before the filesystem reaches 100 percent.
  • Frequent network timeouts may come from DNS, the egress proxy, remote rate limits, or firewall rules rather than Huginn itself.

Scale CPU and RAM before simply adding workers. Each extra worker consumes memory and can increase database connections; tune the process layout in Procfile and config/puma.rb, then re-export it.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

PostgreSQL versus MySQL/MariaDB

Both database families are supported by the production documentation. The right choice is usually the one your team can operate reliably rather than the one with a marginally different resource profile.

Decision factor PostgreSQL MySQL/MariaDB
Documented Huginn example huginn role and huginn_production database Supported with the corresponding adapter and client libraries
Operational familiarity Prefer if your backup, monitoring, and upgrade procedures already use PostgreSQL Prefer if your team already standardizes on MySQL or MariaDB
Configuration work Set adapter, database, user, password, localhost, and port 5432 Set the equivalent adapter, credentials, host, and port from the current environment example
Primary risk Incorrect role ownership or libpq development dependencies Incorrect adapter or client development dependencies

Whichever engine you select, test migrations, scheduled writes, backups, and restores before inviting additional users.

Troubleshooting by symptom

The web page is unavailable

  • Run sudo nginx -t; fix syntax errors first.
  • Check that DNS points to the VPS and that the firewall permits the selected web ports.
  • Inspect the generated runit service and Huginn logs to confirm that Puma is running and listening where Nginx expects.
  • If HTTPS was just enabled, verify the certificate paths, key permissions, hostname, and system clock.

Database tasks fail during setup

  • Confirm the database server is running and reachable on localhost.
  • Compare every .env value with the actual role, password, database name, adapter, and port.
  • Ensure the Huginn database role owns the production database and can create tables.
  • Install the correct database development headers, then rerun gem installation before retrying migrations.

Workers stop after reboot

Check that runit is installed and supervising the exported directories, that the service account can read .env and write log/ and tmp/, and that the export used the production environment. If you changed .env, Procfile, or config/puma.rb, export again before restarting.

Agents cannot reach an external service

Test DNS and HTTPS from the VPS, inspect firewall and proxy rules, and check the remote service’s rate limits. If an egress proxy is required, verify that the supervised Huginn processes—not only your interactive shell—receive its configuration.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Go-live checklist

  • Debian or Ubuntu release matches the current Huginn guide.
  • Two CPU cores and sufficient RAM, swap, and SSD capacity are available for the planned agents.
  • System Ruby is used; unsupported Ruby version managers are not in the service path.
  • A disabled-login huginn account owns the checkout, logs, and temporary files.
  • Database credentials work, the production database is private, and a restore has been tested.
  • .env is mode 600 and backed up through a secure secrets process.
  • Production gems, migrations, seed data, npm dependencies, and assets completed successfully.
  • Foreman/runit services are exported, enabled, and healthy after reboot.
  • Nginx passes nginx -t, the domain resolves correctly, and HTTPS uses a trusted certificate.
  • FORCE_SSL=true is enabled only after HTTPS works.
  • Log rotation, monitoring, patching, database backups, and egress controls are documented.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.