audiobookshelf / audiobookshelf-web Goto Github PK
View Code? Open in Web Editor NEWWebsite for audiobookshelf
Home Page: https://audiobookshelf.org
Website for audiobookshelf
Home Page: https://audiobookshelf.org
Guide which covers how podcasts work. Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:
Add an example .opf file to the documentation section on Additional Metadata. Proposal attached (includes subtitle and asin elements which will be in the next release.
Note: the app supports multiple series / volumeNumber elements, however, when they are read in from a .opf file each one overwrites the previous.
The documentation describes in detail how to deploy audiobookshelf using Docker and docker-compose, with examples given in the repository. However, no such documentation exists for using Kubernetes.
Reading through the existing issues, it becomes apparent that some users do deploy the project on Kubernetes clusters, and there are different reasons why this could make sense.
I found that existing community-driven solutions found online, e.g. helm-charts, need to be updated at best and are often even unsafe to use. Thus, I created my own configuration using kustomize. Others might benefit from official documentation about deploying on Kubernetes.
The documentation should look similar to the one using docker-compose and include examples in the repository.
Ensure all guides have been updated.
Followed the documentation but am greeted with this error on start up.
docker logs --tail 100 -f audiobookshelf
npm ERR! code ENOENT
npm ERR! syscall open
npm ERR! path /srv/package.json
npm ERR! errno -2
npm ERR! enoent ENOENT: no such file or directory, open '/srv/package.json'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2021-12-30T23_55_28_173Z-debug.log
The latest image was pulled from docker hub.
for completeness, this is the docker inspect
docker inspect audiobookshelf
[
{
"Id": "f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838",
"Created": "2021-12-30T23:55:20.632879758Z",
"Path": "docker-entrypoint.sh",
"Args": [
"npm",
"start"
],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 254,
"Error": "",
"StartedAt": "2021-12-30T23:55:23.018582086Z",
"FinishedAt": "2021-12-30T23:55:28.253236425Z"
},
"Image": "sha256:bc26f7405ad2cdadba339fa7bec94576ed0c8adfd2f7546abe25cc6776b5d38b",
"ResolvConfPath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/hostname",
"HostsPath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/hosts",
"LogPath": "/var/lib/docker/containers/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838/f97338c516c4ae6a96abcc57802d13e77550149e6a8da590751026c384f52838-json.log",
"Name": "/audiobookshelf",
"RestartCount": 0,
"Driver": "btrfs",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "docker-default",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"ab-metadata:/metadata",
"/mnt/media/audio/Audiobooks:/srv/audiobooks:ro",
"ab-config:/config"
],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "bridge",
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "9888"
}
]
},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": [
"AUDIT_WRITE",
"CHOWN",
"DAC_OVERRIDE",
"FOWNER",
"FSETID",
"KILL",
"MKNOD",
"NET_BIND_SERVICE",
"NET_RAW",
"SETFCAP",
"SETGID",
"SETPCAP",
"SETUID",
"SYS_CHROOT"
],
"CapDrop": [
"AUDIT_CONTROL",
"BLOCK_SUSPEND",
"DAC_READ_SEARCH",
"IPC_LOCK",
"IPC_OWNER",
"LEASE",
"LINUX_IMMUTABLE",
"MAC_ADMIN",
"MAC_OVERRIDE",
"NET_ADMIN",
"NET_BROADCAST",
"SYSLOG",
"SYS_ADMIN",
"SYS_BOOT",
"SYS_MODULE",
"SYS_NICE",
"SYS_PACCT",
"SYS_PTRACE",
"SYS_RAWIO",
"SYS_RESOURCE",
"SYS_TIME",
"SYS_TTY_CONFIG",
"WAKE_ALARM"
],
"CgroupnsMode": "private",
"Dns": [],
"DnsOptions": null,
"DnsSearch": null,
"ExtraHosts": [],
"GroupAdd": null,
"IpcMode": "private",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": false,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": null,
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DeviceCgroupRules": null,
"DeviceRequests": null,
"KernelMemory": 0,
"KernelMemoryTCP": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": null,
"OomKillDisable": null,
"PidsLimit": null,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0,
"MaskedPaths": [
"/proc/asound",
"/proc/acpi",
"/proc/kcore",
"/proc/keys",
"/proc/latency_stats",
"/proc/timer_list",
"/proc/timer_stats",
"/proc/sched_debug",
"/proc/scsi",
"/sys/firmware"
],
"ReadonlyPaths": [
"/proc/bus",
"/proc/fs",
"/proc/irq",
"/proc/sys",
"/proc/sysrq-trigger"
],
"Init": false
},
"GraphDriver": {
"Data": null,
"Name": "btrfs"
},
"Mounts": [
{
"Type": "volume",
"Name": "ab-metadata",
"Source": "/var/lib/docker/volumes/ab-metadata/_data",
"Destination": "/metadata",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
},
{
"Type": "bind",
"Source": "/mnt/media/audio/Audiobooks",
"Destination": "/srv/audiobooks",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
},
{
"Type": "volume",
"Name": "ab-config",
"Source": "/var/lib/docker/volumes/ab-config/_data",
"Destination": "/config",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "21f1be409137",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=10.13.0",
"YARN_VERSION=1.10.1",
"NODE_ENV=production"
],
"Cmd": [
"npm",
"start"
],
"Image": "advplyr/audiobookshelf:latest",
"Volumes": {
"/config": {},
"/metadata": {},
"/srv/audiobooks": {}
},
"WorkingDir": "/srv",
"Entrypoint": [
"docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "e693fddb559d3a57492ebd4624ce6f2488e94cc90ea5063914969bcf2731ce69",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/e693fddb559d",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"bridge": {
"IPAMConfig": {},
"Links": null,
"Aliases": null,
"NetworkID": "9d5f0c47807f5d328190d6391ceefb518afbd3972ac7a0aada4cff5ae1f813e8",
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "",
"DriverOpts": null
}
}
}
}
]
any thougths ?
Add some more explanation on how to add a new guide (for people who aren't comfortable messing with code but can write words)
Add a brief explanation and commands of how I make gifs using OBS and imagemagick
It would be good to add the ability to translate guides and make them available in other languages. There has been discussion around weblate. I'm wondering if it's worth getting a dedicated VPS that could run weblate, and then add a demo ABS instance when that is ready.
2.2.x
, but need to be changed for 2.4.x.
Repro steps:
Alternatively, attempt to access the discord server from the advplyr/audiobookshelf Bug report GitHub page and see the same result.
I think there needs to be some guides for users who don't manage a server. Currently all guides are for server administration, and most troubleshooting is done by the server admin.
I don't know where this should go. Maybe rename "user guides" to "server guides" and then have a new "user guides" section? It would also be nice if there was a way to get to these guides in the app/browser so the user doesn't have to navigate away (but a Help button in the side menu that links to the ABS website would suffice)
The user/server guides could still be in the same page, but separate them like the book/podcast view on https://www.audiobookshelf.org/docs/
Web docker version 2.5.0
Expectation... if a book is completed/finished, then it should not be displayed in the "Continue Listening" section.
Bonus issue:
When I finished "Blood Rites" (book 6), I would have expected to see "Dead Beat" (book 7) in the "Continue Series" section, but it did not display there.
Guide on how to share content from an ABS server to another service works using RSS feeds. Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:
Add an explanation somewhere that the mobile apps are planned to be translated and will reuse the server translations, just hasn't been set up yet.
Link to relevant GH issues, but then it's on the website and less likely to be lost.
There should be a guide for sending to Kindle (or other ereaders). It won't include instructions for every email provider, but should include Gmail because it's pretty common.
This has come up several times. Most recent Discord discussion (begins before this message) https://discord.com/channels/942908292873723984/942914154254176257/1225838871833608293
(from discord conversation and advplyr research in how to add mermaid for me)
To make it easier to keep diagrams up to date, mermaid.js would be nice.
advplyr attempted to integrate this, but it looks like the website needs to update to nuxt-v2 for it to work properly.
Nuxt should be updated at some point anyway
Hi, I am not familiar with the Stack; It would be easier to contribute to the documentation if you would add a short section in the README how to run it locally.
How to use the builtin m4b converter. Maybe a short list of links for other tools that can be used too
Would like screenshots and possibly some graphics. The guide does not need to be in the same order as below, but should have all of the following:
Guide on how to have multiple users/servers connected from the same mobile app. Also explain how offline mode works. Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:
How could I edit this to change the localhost to an ip of my choice?
While the guides and docs on the website just keep getting better and better, It seems like multiple aspects of the UI is in need of some smoothing out. Problems seem most notable in the nav bar, which is jarringly inconsistent between pages and sometimes non-existent. This seems especially problematic when page links move from the left side of the screen to the right and are added/removed/change their names. You can usually get where you need to go, but having four different systems of navigation within as many clicks of each other doesn't seem very user-friendly. Additionally, the FAQ tab is only visible on the docs or the guides page, and isn't even present on the navbar when you are in the FAQ tab itself. On small screens, the sidebar also disappears which mades navigation through guides impossible as brought up in #28, and the showcase tab disappears entirely.
All just CSS nitpicking, but still worth addressing.
When browsing the website on mobile, the sidebar for the guides and documentation is missing. This is not a problem for https://www.audiobookshelf.org/docs because the user can scroll through everything on the same page, but causes problems for https://www.audiobookshelf.org/guides.
Would it be possible to add some sort of hamburger menu (quick googling shows this may be a "flyout menu") to get the list of guides on mobile?
This issue is mitigated by switching to desktop view in a mobile browser.
I think adding a guide for podman container deployment will be a good addition to the docs as it will allow Fedora or Fedora based distro users to easily install audiobookshelf as the latest version of podman is pre-installed in Fedora.
Example podman quadlet container for audiobookshelf
# audiobookshelf.container
[Container]
ContainerName=audiobookshelf
Image=ghcr.io/advplyr/audiobookshelf:latest
AutoUpdate=registry
NoNewPrivileges=true
PublishPort=127.0.0.1:13378:80
Volume=./Audiobooks:/Audiobooks
Volume=./Books:/Books
Volume=./config:/config
Volume=./metadata:/metadata
[Service]
Restart=always
[Install]
WantedBy=default.target
The side navigation bar on the docs page is not scrollable on smaller screens, causing some of the content to become inaccessible.
This is a list of guides that I think would be useful on the ABS website. Some of these topics are things that can easily be figured out by clicking around the user interface, but new users seem to keep asking things related to this so it should be more clear in the documentation, or having questions about capabilities before installing ABS and various video reviews are out of date.
I'll try and keep this top comment up to date as other things come up on Discord or ABS versions are released, but not sure how well I'll keep each guide up to date (the guides I originally wrote are 19 patch versions behind as of writing this).
But for now the answer is "if you don't want the server downloading episodes then use a normal podcast app"
Guide on how to set up local storage on Android.
Would like some graphics. The guide does not need to be in the same order as below, but should have all of the following:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.