Add Homarr support
This commit is contained in:
@@ -19,6 +19,7 @@ It's set up to follow the [TRaSH guidelines](https://trash-guides.info/Hardlinks
|
|||||||
the process within Prowlarr is the same as for the other containers (add app). You'll have to add
|
the process within Prowlarr is the same as for the other containers (add app). You'll have to add
|
||||||
an API key within Mylar3, yourself.
|
an API key within Mylar3, yourself.
|
||||||
- [Audiobookshelf](https://www.audiobookshelf.org/) is a self-hosted audiobook and podcast server.
|
- [Audiobookshelf](https://www.audiobookshelf.org/) is a self-hosted audiobook and podcast server.
|
||||||
|
- [Homarr](https://homarr.dev/) is _a sleek, modern dashboard that puts all of your apps and services at your fingertips._
|
||||||
- [Prowlarr](https://wiki.servarr.com/prowlarr) can keep track of indexers, which are services that
|
- [Prowlarr](https://wiki.servarr.com/prowlarr) can keep track of indexers, which are services that
|
||||||
keep track of Torrent or UseNet links. One can search an indexer for certain content and find a
|
keep track of Torrent or UseNet links. One can search an indexer for certain content and find a
|
||||||
where to download this. **Note**: when adding an indexer, please do not set the "seed ratio" to
|
where to download this. **Note**: when adding an indexer, please do not set the "seed ratio" to
|
||||||
@@ -42,8 +43,8 @@ It's set up to follow the [TRaSH guidelines](https://trash-guides.info/Hardlinks
|
|||||||
- [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) is like Overseerr, but for Jellyfin.
|
- [Jellyseerr](https://github.com/Fallenbagel/jellyseerr) is like Overseerr, but for Jellyfin.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
Currently this script only works on Linux. There is a chance that the sample docker compose file will work on Windows, although untested.
|
Currently, this script only works on Linux. There is a chance that the sample docker compose file will work on Windows,
|
||||||
The only requirements other than that are **Python 3** and **docker** with **docker-compose-v2**.
|
although untested. The only requirements other than that are **Python 3** and **docker** with **docker-compose-v2**.
|
||||||
While this script _may_ work on docker-compose-v1 it's made to be and highly recommended to be run using v2.
|
While this script _may_ work on docker-compose-v1 it's made to be and highly recommended to be run using v2.
|
||||||
The easiest way to install these dependencies on Ubuntu and other Debian-based distors is by running:
|
The easiest way to install these dependencies on Ubuntu and other Debian-based distors is by running:
|
||||||
```
|
```
|
||||||
@@ -73,7 +74,8 @@ If you're coming from an older version or reinstalling with different IDs, run `
|
|||||||
6. Take a look at the `docker-compose.yml` file. If there are services you would like to ignore
|
6. Take a look at the `docker-compose.yml` file. If there are services you would like to ignore
|
||||||
(for example, running PleX and Jellyfin at the same time is a bit unusual), you can comment them
|
(for example, running PleX and Jellyfin at the same time is a bit unusual), you can comment them
|
||||||
out by placing `#` in front of the lines. This ensures they are ignored by Docker compose.
|
out by placing `#` in front of the lines. This ensures they are ignored by Docker compose.
|
||||||
Double check that your .env file is set up properly.
|
Double check that your .env file is set up properly. Also make sure to add a newly generated encryption key to the
|
||||||
|
Homarr section, if you want to use it.
|
||||||
7. Run `docker compose up -d` to start the containers. If it complains about permissions run the following commands to add your current user to the docker group and apply changes:
|
7. Run `docker compose up -d` to start the containers. If it complains about permissions run the following commands to add your current user to the docker group and apply changes:
|
||||||
```
|
```
|
||||||
sudo groupadd docker
|
sudo groupadd docker
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ class ContainerConfig:
|
|||||||
self.comic_dir = root_dir + '/media/comics'
|
self.comic_dir = root_dir + '/media/comics'
|
||||||
self.torrent_dir = root_dir + '/data/torrents'
|
self.torrent_dir = root_dir + '/data/torrents'
|
||||||
self.usenet_dir = root_dir + '/data/usenet'
|
self.usenet_dir = root_dir + '/data/usenet'
|
||||||
|
self.homarr_dir = root_dir + '/data/homarr/appdata'
|
||||||
self.UID = os.popen('id -u').read().rstrip('\n')
|
self.UID = os.popen('id -u').read().rstrip('\n')
|
||||||
|
|
||||||
def plex(self):
|
def plex(self):
|
||||||
@@ -213,6 +214,22 @@ class ContainerConfig:
|
|||||||
' restart: unless-stopped\n\n'
|
' restart: unless-stopped\n\n'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def homarr(self):
|
||||||
|
key = os.urandom(124).hex()
|
||||||
|
return (
|
||||||
|
' homarr:\n'
|
||||||
|
' image: ghcr.io/homarr-labs/homarr:latest\n'
|
||||||
|
' container_name: homarr\n'
|
||||||
|
' environment:\n'
|
||||||
|
' - SECRET_ENCRYPTION_KEY=' + key + '\n'
|
||||||
|
' volumes:\n'
|
||||||
|
' - ' + self.homarr_dir + ':/appdata\n'
|
||||||
|
' - /var/run/docker.sock:/var/run/docker.sock\n'
|
||||||
|
' ports:\n'
|
||||||
|
' - "7575:7575"\n'
|
||||||
|
' restart: unless-stopped\n\n'
|
||||||
|
)
|
||||||
|
|
||||||
def qbittorrent(self):
|
def qbittorrent(self):
|
||||||
return (
|
return (
|
||||||
' qbittorrent:\n'
|
' qbittorrent:\n'
|
||||||
|
|||||||
@@ -145,6 +145,18 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- "9696:9696"
|
- "9696:9696"
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
|
|
||||||
|
homarr:
|
||||||
|
container_name: homarr
|
||||||
|
image: ghcr.io/homarr-labs/homarr:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration
|
||||||
|
- ./homarr/appdata:/appdata
|
||||||
|
environment:
|
||||||
|
- SECRET_ENCRYPTION_KEY=
|
||||||
|
ports:
|
||||||
|
- "7575:7575"
|
||||||
|
|
||||||
jackett:
|
jackett:
|
||||||
image: lscr.io/linuxserver/jackett:latest
|
image: lscr.io/linuxserver/jackett:latest
|
||||||
|
|||||||
4
main.py
4
main.py
@@ -59,6 +59,8 @@ print('Use Mylar3? [Y/n]', end=" ")
|
|||||||
take_input('mylar3', 'servarr')
|
take_input('mylar3', 'servarr')
|
||||||
print('Use Audiobookshelf? [Y/n]', end=" ")
|
print('Use Audiobookshelf? [Y/n]', end=" ")
|
||||||
take_input('audiobookshelf', 'servarr')
|
take_input('audiobookshelf', 'servarr')
|
||||||
|
print('Use Homarr? [Y/n]', end=" ")
|
||||||
|
take_input('homarr', 'servarr')
|
||||||
if len(services_classed['servarr']) == 0:
|
if len(services_classed['servarr']) == 0:
|
||||||
print('Warning: no media management services selected.')
|
print('Warning: no media management services selected.')
|
||||||
if services_classed['servarr'].__contains__('sonarr') or services_classed['servarr'].__contains__('radarr'):
|
if services_classed['servarr'].__contains__('sonarr') or services_classed['servarr'].__contains__('radarr'):
|
||||||
@@ -122,7 +124,7 @@ print('\n===CONFIGURATION===')
|
|||||||
|
|
||||||
print('Please enter your timezone (like "Europe/Amsterdam") or press enter to use your system\'s configured timezone:', end=' ')
|
print('Please enter your timezone (like "Europe/Amsterdam") or press enter to use your system\'s configured timezone:', end=' ')
|
||||||
timezone = input()
|
timezone = input()
|
||||||
if (timezone == ''):
|
if timezone == '':
|
||||||
timezone = get_system_timezone()
|
timezone = get_system_timezone()
|
||||||
|
|
||||||
if len(timezone) == 0: # if user pressed enter and reading timezone from /etc/localtime failed then default to Amsterdam
|
if len(timezone) == 0: # if user pressed enter and reading timezone from /etc/localtime failed then default to Amsterdam
|
||||||
|
|||||||
Reference in New Issue
Block a user