2021-10-09 21:54:45 +02:00
< br / >
< div align = "center" >
< img alt = "Audiobookshelf Banner" src = "https://github.com/advplyr/audiobookshelf/raw/master/images/banner.svg" width = "600" >
2021-08-20 00:29:36 +02:00
2021-10-09 21:54:45 +02:00
< p align = "center" >
< br / >
< a href = "https://audiobookshelf.org/docs" > Documentation< / a >
·
< a href = "https://audiobookshelf.org/install" > Install Guides< / a >
·
< a href = "https://audiobookshelf.org/showcase" > Showcase< / a >
< / p >
< / div >
2021-08-20 00:29:36 +02:00
2021-10-09 21:54:45 +02:00
## About
2021-09-26 19:08:48 +02:00
2021-10-09 21:54:45 +02:00
Audiobookshelf is a self-hosted audiobook server for managing and playing your audiobooks.
### Features
2021-09-04 21:35:25 +02:00
2021-10-09 21:54:45 +02:00
* Fully **open-source** , including the [android app ](https://github.com/advplyr/audiobookshelf-app ) *(in beta)*
* Stream all audiobook formats on the fly
* Multi-user support w/ custom permissions
* Keeps progress per user and syncs across devices
* Auto-detects library updates, no need to re-scan
* Upload full audiobooks and covers
* Backup your metadata + automated daily backups
2021-08-20 00:29:36 +02:00
2021-10-09 21:54:45 +02:00
Is there a feature you are looking for? [Suggest it ](https://github.com/advplyr/audiobookshelf/issues/new )
Android app is in beta, try it out on the [Google Play Store ](https://play.google.com/store/apps/details?id=com.audiobookshelf.app )
2021-08-20 00:29:36 +02:00
2021-10-09 21:54:45 +02:00
< img alt = "Library Screenshot" src = "https://github.com/advplyr/audiobookshelf/raw/master/images/LibraryStream.png" / >
2021-08-20 02:14:24 +02:00
2021-10-01 02:57:13 +02:00
## Organizing your audiobooks
2021-08-20 02:21:04 +02:00
2021-10-01 02:57:13 +02:00
#### Directory structure and folder names are critical to AudioBookshelf!
2021-09-27 00:20:41 +02:00
2021-10-01 02:57:13 +02:00
See [documentation ](https://audiobookshelf.org/docs ) for supported directory structure, folder naming conventions, and audio file metadata usage.
2021-08-20 02:21:04 +02:00
2021-09-05 02:58:39 +02:00
2021-08-20 00:29:36 +02:00
## Installation
2021-09-29 17:52:59 +02:00
** Default username is "root" with no password
2021-09-25 23:23:57 +02:00
### Docker Install
Available in Unraid Community Apps
2021-08-20 00:29:36 +02:00
```bash
2021-09-25 23:23:57 +02:00
docker pull advplyr/audiobookshelf
docker run -d \
-p 1337:80 \
-v < /path/to/audiobooks>:/audiobooks \
-v < /path/to/config>:/config \
-v < /path/to/metadata>:/metadata \
--name audiobookshelf \
--rm advplyr/audiobookshelf
2021-08-20 00:29:36 +02:00
```
2021-10-31 15:54:58 +01:00
### Running with Docker Compose
```bash
### docker-compose.yml ###
services:
app:
image: advplyr/audiobookshelf
ports:
- 13378:80
volumes:
- < path / to / your / audiobooks > :/audiobooks
- < path / to / metadata > :/metadata
- < path / to / config > :/config
```
2021-09-25 23:23:57 +02:00
### Linux (amd64) Install
A simple installer is added to setup the initial config. If you already have audiobooks, you can enter the path to your audiobooks during the install. The installer will create a user and group named `audiobookshelf` .
2021-09-26 00:58:06 +02:00
### Ubuntu Install via PPA
A PPA is hosted on [github ](https://github.com/advplyr/audiobookshelf-ppa ), add and install:
2021-09-25 23:23:57 +02:00
```bash
curl -s --compressed "https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg" | sudo apt-key add -
sudo curl -s --compressed -o /etc/apt/sources.list.d/audiobookshelf.list "https://advplyr.github.io/audiobookshelf-ppa/audiobookshelf.list"
sudo apt update
sudo apt install audiobookshelf
```
or use a single command
```bash
curl -s --compressed "https://advplyr.github.io/audiobookshelf-ppa/KEY.gpg" | sudo apt-key add - & & sudo curl -s --compressed -o /etc/apt/sources.list.d/audiobookshelf.list "https://advplyr.github.io/audiobookshelf-ppa/audiobookshelf.list" & & sudo apt update & & sudo apt install audiobookshelf
```
2021-09-26 00:58:06 +02:00
### Install via debian package
2021-09-25 23:23:57 +02:00
2021-09-26 00:58:06 +02:00
Get the `deb` file from the [github repo ](https://github.com/advplyr/audiobookshelf-ppa ).
2021-09-25 23:23:57 +02:00
2021-09-29 18:04:35 +02:00
See [instructions ](https://www.audiobookshelf.org/install#debian )
2021-09-25 23:23:57 +02:00
2021-10-01 02:57:13 +02:00
#### Linux file locations
2021-09-25 23:23:57 +02:00
Project directory: `/usr/share/audiobookshelf/`
Config file: `/etc/default/audiobookshelf`
System Service: `/lib/systemd/system/audiobookshelf.service`
Ffmpeg static build: `/usr/lib/audiobookshelf-ffmpeg/`
2021-10-24 23:05:58 +02:00
## Reverse Proxy Set Up
2021-09-20 02:52:08 +02:00
2021-10-24 23:05:58 +02:00
### NGINX Reverse Proxy
2021-10-24 02:12:32 +02:00
2021-10-24 23:05:58 +02:00
Add this to the site config file on your nginx server after you have changed the relevant parts in the < > brackets, and inserted your certificate paths.
2021-10-24 02:12:32 +02:00
```bash
2021-10-24 02:13:29 +02:00
server
2021-10-24 02:12:32 +02:00
{
listen 443 ssl;
server_name < sub > .< domain > .< tld > ;
access_log /var/log/nginx/audiobookshelf.access.log;
error_log /var/log/nginx/audiobookshelf.error.log;
ssl_certificate /path/to/certificate;
ssl_certificate_key /path/to/key;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_pass http://< URL_to_forward_to > ;
proxy_redirect http:// https://;
}
}
2021-10-24 02:13:29 +02:00
```
2021-10-24 02:12:32 +02:00
2021-10-24 10:26:29 +02:00
### Apache Reverse Proxy
2021-10-24 23:05:58 +02:00
Add this to the site config file on your Apache server after you have changed the relevant parts in the < > brackets, and inserted your certificate paths.
2021-10-24 10:26:29 +02:00
For this to work you must enable at least the following mods using `a2enmod` :
- `ssl`
- `proxy_module`
- `proxy_wstunnel_module`
- `rewrite_module`
```bash
< IfModule mod_ssl . c >
< VirtualHost * :443 >
ServerName < sub > .< domain > .< tld >
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPreserveHost On
ProxyPass / http://localhost:< audiobookshelf_port > /
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://localhost:< audiobookshelf_port > /$1" [P,L]
# unless you're doing something special this should be generated by a
# tool like certbot by let's encrypt
SSLCertificateFile /path/to/cert/file
SSLCertificateKeyFile /path/to/key/file
< / VirtualHost >
< / IfModule >
```
2021-10-24 23:05:58 +02:00
## Run from source
Note: you will need `npm` , `node12` , and `ffmpeg` to run this project locally
```bash
git clone https://github.com/advplyr/audiobookshelf.git
cd audiobookshelf
# All paths default to root directory. Config path is the database.
# Directories will be created if they don't exist
# Paths are relative to the root directory, so "../Audiobooks" would be a valid path
npm run prod -- -p [PORT] --audiobooks [AUDIOBOOKS_PATH] --config [CONFIG_PATH] --metadata [METADATA_PATH]
```
2021-10-24 02:12:32 +02:00
2021-08-20 00:29:36 +02:00
## Contributing
2021-10-24 02:12:32 +02:00
Feel free to help out