DEV Community

Daniel Kukula
Daniel Kukula

Posted on

Running Livebook as a Systemd Service for Your User

Livebook is a powerful tool for creating and sharing interactive notebooks with Elixir. To make it even more convenient, you can set it up to run as a systemd service for your user. This ensures that Livebook starts automatically whenever you log in, and runs in the background without requiring root permissions. Here’s a step-by-step guide to help you get started.

Step 1: Install Livebook

First, ensure you have Livebook installed. You can install it via Elixir’s package manager, mix, by running:

mix escript.install hex livebook
Enter fullscreen mode Exit fullscreen mode

Step 2: Create a User Systemd Service File

Systemd allows users to manage their own services. User-specific service files are stored in ~/.config/systemd/user/.

mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/livebook.service
Enter fullscreen mode Exit fullscreen mode

Step 3: Define the Service Configuration

Add the following content to the livebook.service file (replace USER and PASSWORD):

[Unit]
Description=Livebook Service

[Service]
Type=simple
ExecStart=/home/__USER__/.asdf/shims/livebook server
Restart=on-failure
Environment=HOME=%h
Environment=MIX_ENV=prod
Environment=PATH=/home/USER/.asdf/shims:/usr/local/bin:/usr/bin:/bin
Environment=LIVEBOOK_HOME=%h/livemd
Environment=LIVEBOOK_PASSWORD=__PASSWORD__
Environment=LIVEBOOK_PORT=8090
Environment=LIVEBOOK_IFRAME_PORT=8091


[Install]
WantedBy=default.target
Enter fullscreen mode Exit fullscreen mode

Explanation:

  • ExecStart: The command to start Livebook. Ensure the path to the Livebook binary is correct.
  • Environment: Sets necessary environment variables. %h will expand to the user’s home directory.

Step 4: Reload User Systemd Configuration

After creating the service file, reload the systemd user configuration.

systemctl --user daemon-reload
Enter fullscreen mode Exit fullscreen mode

Step 5: Enable the Service for Your User

Enable the service to start on user login.

systemctl --user enable livebook.service
Enter fullscreen mode Exit fullscreen mode

Step 6: Start the Service for Your User

Start the Livebook service.

systemctl --user start livebook.service
Enter fullscreen mode Exit fullscreen mode

Step 7: Check the Service Status

Verify that the service is running.

systemctl --user status livebook.service
Enter fullscreen mode Exit fullscreen mode

Step 8: Enable User Systemd Services on Boot

Ensure that user services are started automatically at boot. You can enable lingering for your user:

sudo loginctl enable-linger USER
Enter fullscreen mode Exit fullscreen mode

Replace USER with your actual username.

Conclusion

By following these steps, you can set up Livebook to run as a systemd service for your user. This setup ensures that Livebook starts automatically when you log in and runs smoothly in the background. Enjoy your interactive notebooks with the convenience of a managed service!

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay