Skip to main content
50% off all plans, limited time. Starting at $2.48/mo
Audiobookshelf

Audiobookshelf

Audiobookshelf is an open-source self-hosted media server for your audiobooks and podcasts. Stream your library to any device, track listening progress across sessions, and keep your collection private.

At a glance

13.5k

GitHub stars

11

Page views

License GPL-3.0 Version Latest OS Ubuntu Server 24.04 LTS Min RAM 1 GB IP IPV4

Access

  • Open URL: https://<SERVER_IP>
  • Accept the browser certificate warning (the certificate is self-signed)
  • Follow the initial setup wizard to create the root user

Important Files and Directories

  • Config File: /etc/default/audiobookshelf
  • Service File: /lib/systemd/system/audiobookshelf.service
  • Nginx Config: /etc/nginx/sites-available/audiobookshelf
  • SSL Certificate: /etc/nginx/ssl/fullchain.pem
  • SSL Private Key: /etc/nginx/ssl/privkey.pem
  • Access Log: /var/log/nginx/audiobookshelf.access.log
  • Error Log: /var/log/nginx/audiobookshelf.error.log

Service Management

Check service status:

systemctl status audiobookshelf

Restart service:

systemctl restart audiobookshelf

Stop service:

systemctl stop audiobookshelf

Start service:

systemctl start audiobookshelf

View logs:

journalctl -u audiobookshelf -f

Nginx Management

Test configuration:

nginx -t

Restart Nginx:

systemctl restart nginx

Reload Nginx:

systemctl reload nginx

Check Nginx status:

systemctl status nginx

Enabling SSL with a Domain

1. Point your domain to the server IP.

2. Install Certbot:

apt install -y certbot python3-certbot-nginx

3. Generate a Let's Encrypt certificate:

certbot certonly --nginx --non-interactive --agree-tos --email [email protected] -d yourdomain.com

4. Replace SSL paths in Nginx config:

vim /etc/nginx/sites-available/audiobookshelf
# Before:
    # ssl_certificate     /etc/nginx/ssl/fullchain.pem;
    # ssl_certificate_key /etc/nginx/ssl/privkey.pem;
# After:
    # ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    # ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

5. Replace server_name _; with your domain in both HTTP and HTTPS blocks:

vim /etc/nginx/sites-available/audiobookshelf
# Before:
    server_name: _;
# After:
    server_name: yourdomain.com;

6. Reload Nginx:

systemctl reload nginx

Notes

  • Audiobookshelf runs as a native systemd service
  • Nginx acts as a reverse proxy and TLS terminator
  • HTTPS is enabled using a self-signed certificate by default
  • Large uploads are supported (client_max_body_size 10240M)
  • Audiobookshelf listens on 127.0.0.1:13378 and is only accessible through Nginx

More in Self Hosted

Related apps.

Deploy Audiobookshelf now. From $2.48/mo.