# Eigene Cloud

# Adguard

# Einstellungen Adguard

## DNS Einstellungen

```
https://dns.quad9.net/dns-query
tls://dns2.digitalcourage.de
tls://fdns1.dismail.de
tls://dnsforge.de

```

## Befehle in Konsole

```
./AdGuardHome -s -h #Hilfe 
```

# Bookstack

## Docker Container

Watchtower läuft  
Allerdings wird Bookstack selbst nicht upgedated.

### Installieren

> Bookstack ist ein leistungsstarkes OpenSource Wiki und kann leicht in einem Docker Container betrieben werden.

### Installieren von BookStack

[Installation · BookStack (bookstackapp.com)](https://www.bookstackapp.com/docs/admin/installation/)

```bash
# Ensure you have read the above information about what this script does before executing these commands.

# Download the script
wget https://raw.githubusercontent.com/BookStackApp/devops/main/scripts/installation-ubuntu-24.04.sh

# Make it executable
chmod a+x installation-ubuntu-22.04.sh

# Run the script with admin permissions
sudo ./installation-ubuntu-22.04.sh
```

### Updating BookStack

BookStack is updated regularly. We try our best to keep the platform and upgrade path as stable as possible. The latest release can be found on [GitHub here](https://github.com/BookStackApp/BookStack/releases) and detailed information on releases is posted on the [BookStack blog here](https://www.bookstackapp.com/tags/releases/).

**Before updating you should back up the database and any file uploads to prevent potential data loss**.  
Backup and restore documentation can be found [here](https://www.bookstackapp.com/docs/admin/backup-restore).

Updating is currently done via Git version control. To update BookStack you can run the three following commands in the root directory of the application:

```bash
git pull origin release
composer install --no-dev
php artisan migrate
```

<div class="highlight" id="bkmrk-"><div class="chroma">  
</div></div>This first command will update the repository that was created in the installation. The second will install the PHP dependencies using `composer`. The third will then update the database with any required changes.

In addition, Clearing the system caches is also recommended:

```bash
php artisan cache:clear
php artisan config:clear
php artisan view:clear
```

<div class="highlight" id="bkmrk--1"><div class="chroma">  
</div></div>Check the below [Version Specific Instructions](https://www.bookstackapp.com/docs/admin/updates/#version-specific-instructions) list for the version you are updating to for any additional instructions.

When running update commands, your command line user will need permission to handle the required files and folders in the BookStack installation folder. You can find more details about [required filesystem permissions here](https://www.bookstackapp.com/docs/admin/filesystem-permissions/).

## Backup

BookStack does not currently have a built-in way to backup and restore but it can be done via the command line fairly simply.

Please note the below commands are based on using Ubuntu. If you are using a different operating system you may have to alter these commands to suit.

<div class="page-content" id="bkmrk--2"><div class="page-content"><div dir="auto">---

</div></div></div>## Backup

There are two types of content you need to backup: Files and database records.

#### Database

The easiest way to backup the database is via `mysqldump`:

<div class="page-content" id="bkmrk--4"><div class="page-content"><div class="page-content"><div dir="auto"><div class="highlight" id="bkmrk--0"><div class="chroma">  
</div></div><div class="highlight" id="bkmrk--5"><div class="highlight"><div class="chroma">  
</div></div></div></div></div></div></div>```bash
# Syntax
## Only specify the `-p` option if the user provided has a password
mysqldump -u {mysql_user} -p {database_name} > {output_file_name}


# Example
mysqldump -u benny bookstack > bookstack.backup.sql

```

If you are using MySQL on Ubuntu, and are using the `root` MySQL user, you will likely have to run the command above with `sudo`:

<div class="page-content" id="bkmrk--6"><div class="page-content"><div class="page-content"><div dir="auto"><div class="highlight" id="bkmrk--7"><div class="chroma">  
</div></div><div class="chroma" id="bkmrk--8"></div></div></div></div></div>```bash
sudo mysqldump -u root bookstack > bookstack.backup.sql

```

The resulting file (`bookstack.backup.sql` in the examples above) will contain all the data from the database you specified. Copy this file to somewhere safe, ideally on a different device.

#### Files

Below is a list of files and folders containing data you should back up. The paths are shown relative to the root BookStack folder.

<div class="page-content" id="bkmrk-.env---file%2C-contain"><div class="page-content"><div dir="auto">- `.env` - File, Contains important configuration information.
- `public/uploads` - Folder, Contains any uploaded images (If not using amazon s3).
- `storage/uploads` - Folder, Contains uploaded page attachments (Only exists as of BookStack v0.13).

</div></div></div>Alternatively you could backup up your whole BookStack folder but only the above are non-restorable.

The following command will create a compressed archive of the above folders and files:

```bash
tar -czvf bookstack-files-backup.tar.gz .env public/uploads storage/uploads

```

<div class="page-content" id="bkmrk--9"><div class="page-content"><div dir="auto"><div class="highlight" id="bkmrk--10"><div class="chroma">  
</div></div><div class="highlight" id="bkmrk--11"><div class="chroma">  
</div></div></div></div></div>The resulting file (`bookstack-files-backup.tar.gz`) will contain all your file data. Copy this to a safe place, ideally on a different device.

<div class="page-content" id="bkmrk--12"><div class="page-content"><div dir="auto">---

</div></div></div>## Restore

If you are restoring from scratch follow the [installation](https://www.bookstackapp.com/docs/admin/installation) instructions first to get a new BookStack instance set-up. **Do not run the `php artisan migrate` installation step when installing BookStack**. You may need to comment this command out if using an installer script. If using a docker container, restore the database before running the BookStack container. Once you are sure the new instance is set-up follow the instructions below.

#### Database

To restore the database you simply need to execute the sql in the output file from the `mysqldump` you performed above. To do this copy your database SQL backup file onto the BookStack or database host machine and run the following:

<div class="page-content" id="bkmrk--14"><div class="page-content"><div class="page-content"><div dir="auto"><div class="highlight" id="bkmrk--15"><div class="chroma">  
</div></div><div class="chroma" id="bkmrk--16"></div></div></div></div></div>```bash
# Syntax
mysql -u {mysql_user} -p {database_name} < {backup_file_name}
## Only specify the -p if the user provided has a password

# Example
mysql -u benny -p bookstack < bookstack.backup.sql

# If using the root user on Ubuntu you may
# have to run the above with root permissions via sudo:
sudo mysql -u root bookstack < bookstack.backup.sql

```

If you are restoring to a new version of BookStack you will have to run `php artisan migrate` after restore to perform any required updates to the database.

#### Files

To restore the files you simply need to copy them from the backup archive back to their original locations. If you created a compressed `bookstack-files-backup.tar.gz` archive as per the backup instructions above you can simply copy that file to your BookStack folder then run the following command:

```bash
tar -xvzf bookstack-files-backup.tar.gz

```

<div class="page-content" id="bkmrk--18"><div class="page-content"><div dir="auto"><div class="highlight" id="bkmrk--19"><div class="chroma">  
</div></div><div class="highlight" id="bkmrk--20"><div class="chroma">  
</div></div></div></div></div>If you get errors during the above command it may be due to permissions. Change permissions so you can write to the restore locations.

After a backup of the files you should reset the permissions to ensure any write-required locations are writable by the server. The locations required for this can be found in the [installation instructions](https://www.bookstackapp.com/docs/admin/installation).

<div class="page-content" id="bkmrk-version-%237-erstellt%3A"><div dir="auto">  
</div>---

<div class="text-muted text-small"><div class="entity-meta"><svg class="svg-icon" data-icon="history" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Version #7   
<svg class="svg-icon" data-icon="star" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Erstellt: 19 October 2022 08:34:25 von hermann   
<svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Zuletzt aktualisiert: 20 March 2023 11:43:13 von hermann</div></div></div>

# FreshRSS

[https://github.com/FreshRSS/FreshRSS/tree/edge/Docker](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker)

# Deploy FreshRSS with Docker

<div class="markdown-heading" dir="auto" id="bkmrk-">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#deploy-freshrss-with-docker)</div>FreshRSS is a self-hosted RSS feed aggregator.

- Official website: [`freshrss.org`](https://freshrss.org/)
- Official Docker images: [`hub.docker.com/r/freshrss/freshrss`](https://hub.docker.com/r/freshrss/freshrss/)
- Repository: [`github.com/FreshRSS/FreshRSS`](https://github.com/FreshRSS/FreshRSS/)
- Documentation: [`freshrss.github.io/FreshRSS`](https://freshrss.github.io/FreshRSS/)
- License: [GNU AGPL 3](https://www.gnu.org/licenses/agpl-3.0.html)

[![FreshRSS logo](https://github.com/FreshRSS/FreshRSS/raw/edge/docs/img/FreshRSS-logo.png)](https://github.com/FreshRSS/FreshRSS/raw/edge/docs/img/FreshRSS-logo.png)

## Install Docker

<div class="markdown-heading" dir="auto" id="bkmrk--3">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#install-docker)</div>See [https://docs.docker.com/get-docker/](https://docs.docker.com/get-docker/)

Example for Linux Debian / Ubuntu:

```
# Install default Docker Compose and automatically the corresponding version of Docker
apt install docker-compose-v2
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--5"><div class="zeroclipboard-container">  
</div></div>## Quick run

<div class="markdown-heading" dir="auto" id="bkmrk--6">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#quick-run)</div>Example running FreshRSS (or scroll down to the [Docker Compose](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#docker-compose) section instead):

```
docker run -d --restart unless-stopped --log-opt max-size=10m \
  -p 8080:80 \
  -e TZ=Europe/Paris \
  -e 'CRON_MIN=1,31' \
  -v freshrss_data:/var/www/FreshRSS/data \
  -v freshrss_extensions:/var/www/FreshRSS/extensions \
  --name freshrss \
  freshrss/freshrss
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--8"><div class="zeroclipboard-container">  
</div></div>- Exposing on port 8080
- With a [server timezone](http://php.net/timezones) (default is `UTC`)
- With an automatic cron job to refresh feeds
- Saving FreshRSS data in a Docker volume `freshrss_data` and optional extensions in `freshrss_extensions`
- Using the default image, which is the latest stable release

### Complete installation

<div class="markdown-heading" dir="auto" id="bkmrk--9">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#complete-installation)</div>Browse to your server [https://freshrss.example.net/](https://freshrss.example.net/) to complete the installation via the FreshRSS Web interface, or use the command line described below.

## Command line

<div class="markdown-heading" dir="auto" id="bkmrk--11">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#command-line)</div>See the [CLI documentation](https://github.com/FreshRSS/FreshRSS/blob/edge/cli/README.md) for all the commands, which can be applied like:

```
docker exec --user www-data freshrss cli/list-users.php
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--13"><div class="zeroclipboard-container">  
</div></div>Example of installation via command line:

```
docker exec --user www-data freshrss cli/do-install.php --default_user freshrss

docker exec --user www-data freshrss cli/create-user.php --user freshrss --password freshrss
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--14"><div class="zeroclipboard-container">  
</div></div>> ℹ️ You have to replace `--user www-data` by `--user apache` when using our images based on Linux Alpine.

## Our Docker image variants

<div class="markdown-heading" dir="auto" id="bkmrk--15">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#our-docker-image-variants)</div>The [tags](https://hub.docker.com/r/freshrss/freshrss/tags) correspond to FreshRSS branches and versions:

- `:latest` (default) is the [latest stable release](https://github.com/FreshRSS/FreshRSS/releases/latest)
- `:edge` is the rolling release, same than our [git `edge` branch](https://github.com/FreshRSS/FreshRSS/tree/edge)
- `:x.y.z` tags correspond to [specific FreshRSS releases](https://github.com/FreshRSS/FreshRSS/releases), allowing you to target a precise version for deployment
- `:x` tags track the latest release within a major version series. For instance, `:1` will update to include any `1.x` releases, but will exclude versions beyond `2.x`
- `*-alpine` use Linux Alpine as base-image instead of Debian
- Our Docker images are designed with multi-architecture support, accommodating a variety of Linux platforms including `linux/arm/v7`, `linux/arm64`, and `linux/amd64`. 
    - For other platforms, see the [custom build section](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#build-custom-docker-image)

### Linux: Debian vs. Alpine

<div class="markdown-heading" dir="auto" id="bkmrk--17">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#linux-debian-vs-alpine)</div>Our default image is based on [Debian](https://www.debian.org/). We offer an alternative based on [Alpine](https://alpinelinux.org/) (with the `*-alpine` tag suffix). In [our tests](https://github.com/FreshRSS/FreshRSS/pull/2205) (2019), Alpine was slower, while Alpine is smaller on disk (and much faster to build), and with newer packages in general (Apache, PHP).

> ℹ️ For some rare systems, one variant might work but not the other, for instance due to kernel incompatibilities.

## Environment variables

<div class="markdown-heading" dir="auto" id="bkmrk--19">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#environment-variables)</div>- `TZ`: (default is `UTC`) A [server timezone](http://php.net/timezones)
- `CRON_MIN`: (default is disabled) Define minutes for the built-in cron job to automatically refresh feeds (see below for more advanced options)
- `DATA_PATH`: (default is empty, defined by `./constants.local.php` or `./constants.php`) Defines the path for writeable data.
- `FRESHRSS_ENV`: (default is `production`) Enables additional development information if set to `development` (increases the level of logging and ensures that errors are displayed) (see below for more development options)
- `COPY_LOG_TO_SYSLOG`: (default is `On`) Copy all the logs to syslog
- `COPY_SYSLOG_TO_STDERR`: (default is `On`) Copy syslog to Standard Error so that it is visible in docker logs
- `LISTEN`: (default is `80`) Modifies the internal Apache listening address and port, e.g. `0.0.0.0:8080` (for advanced users; useful for [Docker host networking](https://docs.docker.com/network/host/))
- `FRESHRSS_INSTALL`: automatically pass arguments to command line `cli/do-install.php` (for advanced users; see example in Docker Compose section). Only executed at the very first run (so far), so if you make any change, you need to delete your `freshrss` service, `freshrss_data` volume, before running again.
- `FRESHRSS_USER`: automatically pass arguments to command line `cli/create-user.php` (for advanced users; see example in Docker Compose section). Only executed at the very first run (so far), so if you make any change, you need to delete your `freshrss` service, `freshrss_data` volume, before running again.

## How to update

<div class="markdown-heading" dir="auto" id="bkmrk--21">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/FreshRSS/FreshRSS/tree/edge/Docker#how-to-update)</div>```
# Rebuild an image (see build section below) or get a new online version:
docker pull freshrss/freshrss
# And then
docker stop freshrss
docker rename freshrss freshrss_old
# See the run section above for the full command
docker run ... --name freshrss freshrss/freshrss
# If everything is working, delete the old container
docker rm freshrss_old
```

# piHole installieren

## Avahi installieren

```bash
# Avahi installieren

apt-get install avahi-daemon

# Hosts Datei anpassen

nano /etc/hosts

### Eintragen

# Als zweite Zeile 
127.0.0.1 phihole.local 

# und in PVE 
pihole.local abändern
```

### Repository hinzufügen

```
apt install software-properties-common
```

### PiHole installieren

```
curl -sSL https://install.pi-hole.net | bash
```

### Unbound installieren 

[https://docs.pi-hole.net/guides/dns/unbound/](https://docs.pi-hole.net/guides/dns/unbound/)

&gt;

We will use [`unbound`](https://github.com/NLnetLabs/unbound), a secure open-source recursive <abbr title="Domain Name Service (decentralized naming system for computers, services, or other resources connected to the Internet)">DNS</abbr> server primarily developed by NLnet Labs, VeriSign Inc., Nominet, and Kirei. The first thing you need to do is to install the recursive <abbr title="Domain Name Service (decentralized naming system for computers, services, or other resources connected to the Internet)">DNS</abbr> resolver:

```
```

```
sudo apt install unbound

```

If you are installing unbound from a package manager, it should install the `root.hints` file automatically with the dependency `dns-root-data`. The root hints will then be automatically updated by your package manager.

**Optional**: Download the current root hints file (the list of primary root servers which are serving the domain "." - the root domain). Update it roughly every six months. Note that this file changes infrequently. This is only necessary if you are not installing unbound from a package manager. If you do this optional step, you will need to uncomment the `root-hints:` configuration line in the suggested config file.

```
```

```
wget https://www.internic.net/domain/named.root -qO- | sudo tee /var/lib/unbound/root.hints

```

## Konfiguration von pihole.conf

Für DNS over TLS

/etc/unbound/unbound.conf.d/pi-hole.conf

```
server:
    use-syslog: yes
    do-daemonize: no
    interface: 127.0.0.1
    port: 5335
    access-control: 127.0.0.0/8 allow
    cache-min-ttl: 3600
    cache-max-ttl: 86400
    prefetch: yes
    qname-minimisation: yes
    harden-below-nxdomain: yes
    harden-referral-path: yes

forward-zone:
    name: "."
    forward-tls-upstream: yes
    forward-addr: 194.242.2.3@853  # Mullvad
    forward-addr: 94.140.14.14@853  # Adguard

```

Nahc dem ändern mit `sudo systemctl restart unbound` neu starten

# Openproject

## Installation

Update the `apt` package index and install packages to allow `apt` to use a repository over HTTPS:

```
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates wget
```

Import the PGP key used to sign our packages:

```
wget -qO- https://dl.packager.io/srv/opf/openproject/key | sudo apt-key add -
```

Note: you might get a warning when importing the key `Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8))`. This happens because APT has updated the way it manages signing keys, and the package provider is not supporting the new way yet.

Add the OpenProject package source:

```
sudo wget -O /etc/apt/sources.list.d/openproject.list \
  https://dl.packager.io/srv/opf/openproject/stable/12/installer/ubuntu/22.04.repo
```

Download the OpenProject package:

```
sudo apt-get update
sudo apt-get install openproject
```

## Update

`sudo apt-get update --allow-releaseinfo-change`

```
sudo apt-get update
sudo apt-get install --only-upgrade openproject
sudo openproject configure
```

On Ubuntu 22.04., you might see warnings like these:

> W: [https://dl.packager.io/srv/deb/opf/openproject/stable/12/ubuntu/dists/22.04/InRelease](https://dl.packager.io/srv/deb/opf/openproject/stable/12/ubuntu/dists/22.04/InRelease): Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

This message is due to Ubuntu 22.04 switching to a more secure way of adding repository sources, which is not yet supported by the repository provider. There is ongoing work on this item, the message is for information only.

If you get an error like the following:

> E: Repository ‘[https://dl.packager.io/srv/deb/opf/openproject/stable/12/ubuntu](https://dl.packager.io/srv/deb/opf/openproject/stable/12/ubuntu) 22.04 InRelease’ changed its ‘Origin’ value from ‘’ to ‘[https://packager.io/gh/opf/openproject](https://packager.io/gh/opf/openproject)’ E: Repository ‘[https://dl.packager.io/srv/deb/opf/openproject/stable/12/ubuntu](https://dl.packager.io/srv/deb/opf/openproject/stable/12/ubuntu) 22.04 InRelease’ changed its ‘Label’ value from ‘’ to ‘Ubuntu 22.04 packages for opf/openproject’

These two messages messages are expected, due to a change in Origin and Label repository metadata, to better explain what the repository is about. You should allow the change, and/or run `sudo apt-get update --allow-releaseinfo-change` for the update to go through.

## Konfiguration

```
nano /etc/openproject/conf.d/server

Server-Adresse: "0penpr.hhml.selfhost.co"
Export ... = "https"
```

Außerdem in den Admineinstellungen die URL ändern.

<div class="page-content" id="bkmrk-"><div class="text-muted text-small"><div class="entity-meta">  
</div></div></div>

# Paperless

## [Paperless installation](https://apfelcast.com/paperless-ngx-nextcloud-scanner-automatischer-workflow/)

<iframe allowfullscreen="allowfullscreen" height="314" src="https://www.youtube.com/embed/DQIbbwHPAqo" width="560"></iframe>

### Vorbereitung

1. [Docker installieren](https://wiki.hhml.selfhost.co/books/linux/page/docker-docker-compose-und-portainer-installieren) und Docker Compose
2. Vorbereitungen treffen

```
# User Anlegen: 
adduser paperless

# User für Docker berechtigen
sudo usermod -aG docker paperless

# Paperless User wechelsn
su paperless

# Ordner erstellen
mkdir consume
chmod 777 consume
```

### Paperless installieren

```bash
bash -c "$(curl -L https://raw.githubusercontent.com/paperless-ngx/paperless-ngx/main/install-paperless-ngx.sh)"
```

**Config**

**URL:**

Port: 8050

**Database: postgres**

**Enable Apache Tika? no**

**OCR language: deu+eng**

**Ordner mit der configuration files**

`/home/paperless/paperles-ngx`

**Eingangsordner**

`/home/paperless/consume`

**Mediafolder**

`/home/paperless/media`

**Data**

`/home/paperless/data`

**Datenbank**

`/home/paperless/db`

Docker-compose.env hinzufügen

`PAPERLESS_CONSUMER_POLLING=10`

Neustart

docker-compose up -d

<span style="color: rgb(34, 34, 34); font-family: var(--font-heading, var(--font-body)); font-size: 2.8275em; font-weight: 400;">FTP Zugang für Nextcloud</span>

[Wie man den FTP Zugang richtig anlegt](https://books.hhml.selfhost.co/books/linux/page/ftp-server-installieren-fur-paperless "FTP-Server Installieren für Paperless")

## Backup and Restore

### Ordner die gesichert werden müssen

<div class="page-content" id="bkmrk-paperless_media-pape"><div class="page-content"><div dir="auto">- paperless\_media
- paperless\_data
- paperless\_db
- bei Docker-Image: paperless-redisdata (Unter: /var/lib/docker/volumes/)

</div></div></div>### Backup mit rsync

zunächst Instanz beenden

<p class="callout warning">Anmelden als sudo! </p>

<p class="callout info">Da SSH nicht möglich ist: bash Datei im /-Verzeichnis das die 4 rsync übernimmt</p>

bash\_aliase hinterlegt (ini)

1\.

```
cd /home/paperless/paperless-ngx
```

```
docker-compose down
```

2\.

```
rsync -arP --delete /home/paperless/paperless_media/ /mnt/Backup/paperless_media --log-file=/mnt/Backup/log/pl-media.log --ignore-existing
```

3\.

```
rsync -arP --delete /home/paperless/paperless_data/ /mnt/Backup/paperless_data --log-file=/mnt/Backup/log/pl-data.log --ignore-existing
```

4\.

```
rsync -arP --delete /home/paperless/paperless_db/ /mnt/Backup/paperless_db --log-file=/mnt/Backup/log/pl-db.log --ignore-existing
```

5\.

```
rsync -arP --delete /var/lib/docker/volumes/paperless_redisdata/ /mnt/Backup/paperless_redisdata --log-file=/mnt/Backup/log/pl-redis.log
```

6\.

```
docker-compose up
```

mit dem Befehl `rsync -a -r --delete /home/paperless /mnt/paperless_backup/daten`werden die daten auf die Synology gespiegelt mit dem Befehl `rsync -a -r --delete /var/lib/docker/volumes/paperless_redisdata /mnt/paperless_backup/config/paperless_redisdata` werden die config files gespiegelt.

### Folgende Cronjobs sind erstellt:

### Restore

zum wiederherstellen Paperless in Portainer stoppen und die Ordner ersetzen

Um die Daten wiederherzusellen werden die 3 Ordner:

<div class="page-content" id="bkmrk-paperless_data-paper"><div class="page-content"><div dir="auto">- paperless\_data
- paperless\_db
- paperless\_media
- paperless\_redisdata (aus docker-volume)

</div></div></div>benötigt.

Zum wiederherstellen werden die Ordner zurück kopiert. Danach sollte es wieder gehen sofern die Berechtigungen passen.

[Weitere Infos zur Administration](https://paperless-ngx-docs.readthedocs.io/en/latest/administration.html)

### Updating Paperless

<p class="callout info">IP-Adresse Paperless Server: 10.1.2.19</p>

#### Docker Route

If a new release of paperless-ngx is available, upgrading depends on how you installed paperless-ngx in the first place. The releases are available at the [release page](https://github.com/paperless-ngx/paperless-ngx/releases).

First of all, ensure that paperless is stopped.

```
cd /home/paperless/paperless-ngx
```

```
docker-compose down
```

After that, [make a backup](https://docs.paperless-ngx.com/administration/#backup).

<div class="page-content" id="bkmrk-if-you-pull-the-imag"><div class="page-content"><div class="page-content"><div class="page-content"><div dir="auto">1. If you pull the image from the docker hub, all you need to do is:

</div></div></div></div></div>```
docker-compose pull
```

```
docker-compose up
```

The docker-compose files refer to the `latest` version, which is always the latest stable release.

<div class="page-content" id="bkmrk-version-%2315-erstellt"><div dir="auto">  
</div>---

<div class="text-muted text-small"><div class="entity-meta"><svg class="svg-icon" data-icon="history" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Version #15   
<svg class="svg-icon" data-icon="star" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Erstellt: 19 October 2022 10:25:38 von Herr_admin   
<svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Zuletzt aktualisiert: 30 January 2023 20:11:23 von hermann</div></div></div>

# Umbrel

### Install umbrelOS on a Raspberry Pi 5

<div class="mt-2 mt-md-1 pb-3 gh-header-meta" id="bkmrk-mayank-chhabra-edite">Mayank Chhabra edited this page on Mar 5 · [14 revisions](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5/_history)</div><svg aria-hidden="true" class="octicon octicon-info mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note

umbrelOS is designed for the [Umbrel Home](https://umbrel.com/umbrel-home). Support for other devices is best-effort and not guaranteed. Some features like external storage support and Migration Assistant are not available - see our [feature comparison](https://github.com/getumbrel/umbrel/wiki/umbrelOS-on-Umbrel-Home-vs.-DIY) for more details.

umbrelOS can be installed on a Raspberry Pi 5 in a number of configurations. The two most common are:

<div class="mt-4" id="bkmrk-recommended%3A%C2%A0install"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body">1. **Recommended:** [Installing umbrelOS on the NVMe or USB drive](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#installing-umbrelos-on-the-nvme-or-usb-drive)
2. **Not recommended:** [Installing umbrelOS on a microSD card and using an external SSD for storage](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#installing-umbrelos-on-a-microsd-card-and-using-an-external-ssd-for-storage)

<div class="markdown-heading">  
</div></div></div></div></div></div>### Installing umbrelOS on the NVMe or USB drive

<div class="mt-4" id="bkmrk-"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body"><div class="markdown-heading">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#installing-umbrelos-on-the-nvme-or-usb-drive)</div></div></div></div></div></div>In this configuration, you will install umbrelOS directly on an NVMe drive or USB drive, which will be automatically partitioned to store umbrelOS and your data.

<svg aria-hidden="true" class="octicon octicon-info mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note

Booting from NVMe or USB instead of a microSD card is only supported on Raspberry Pi 5 for umbrelOS 1.2.0 and later. Booting from NVMe or USB is not supported on Raspberry Pi 4. Additionally, certain NVMe drives may not be compatible with specific NVMe HATs. It is crucial to check the compatibility of your NVMe drive with the HAT you are using before proceeding. HAT manufacturers typically provide lists of compatible drives and known quality issues on their websites. Using a drive not on the compatible list may result in instability or failure to boot. Also, make sure to check the quality of your NVMe SSD, as some drives are of poor quality or have reported issues that could affect performance and reliability.

#### What you will need

<div class="mt-4" id="bkmrk-raspberry-pi-5-offic"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body"><div class="markdown-heading">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#what-you-will-need)</div>- Raspberry Pi 5
- Official Raspberry Pi power supply
- Ethernet cable
- Either an NVMe drive + HAT or USB drive (depending on your preference)

<div class="markdown-heading">  
</div></div></div></div></div></div>#### Steps

<div class="mt-4" id="bkmrk--3"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body"><div class="markdown-heading">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#steps)</div><div class="markdown-alert markdown-alert-tip">  
</div></div></div></div></div></div><svg aria-hidden="true" class="octicon octicon-light-bulb mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z"></path></svg>Tip

If you have an early Raspberry Pi 5 model, you may need to update the bootloader firmware in order to be able to boot from NVMe. If this is the case, please follow the official Raspberry Pi documentation on how to update the bootloader firmware: [https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#bootloader\_update\_stable](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#bootloader_update_stable)

<div class="mt-4" id="bkmrk-download-the-latest%C2%A0"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body"><div class="markdown-alert markdown-alert-tip">  
</div>1. Download the latest [umbrelOS image](https://download.umbrel.com/release/latest/umbrelos-pi5.img.zip) for Rasberry Pi 5.
2. Download [Balena Etcher](https://etcher.balena.io/) on your computer. It is required to flash the umbrelOS image that you downloaded in the previous step to your NVMe or USB drive.
3. Attach your NVMe drive or USB drive to your computer. For the NVMe drive, you will need to use a USB adapter to connect it to your computer.
4. Flash the umbrelOS image to your NVMe drive or USB drive using Balena Etcher. Once the flashing process is complete, safely eject the drive from your computer.
5. Attach the NVMe drive or USB drive to your Raspberry Pi 5.
6. Connect your Raspberry Pi 5 to your network using an Ethernet cable.
7. Power on your Raspberry Pi 5 using the official Raspberry Pi power supply. Third-party power supplies often cannot deliver the required current or maintain a stable voltage, leading to system instability, microSD card corruption, and corruption or data loss on connected hard drives.
8. And that's it! Wait for a few minutes for umbrelOS to boot up. You can access umbrelOS by navigating to [http://umbrel.local](http://umbrel.local/) on any device connected to the same network.

<div class="markdown-alert markdown-alert-warning">  
</div></div></div></div></div></div><svg aria-hidden="true" class="octicon octicon-alert mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Warning

The boot order on your Raspberry Pi 5 is set to boot from a microSD card preferentially before booting from NVMe or USB. Make sure that you do not have a bootable microSD card inserted when booting from NVMe or USB. If you have a microSD card inserted, the Raspberry Pi 5 will boot from the microSD card instead of the NVMe or USB drive.

<div class="mt-4" id="bkmrk--5"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body"><div class="markdown-alert markdown-alert-warning">  
</div>---

<div class="markdown-heading">  
</div></div></div></div></div></div>### Installing umbrelOS on a microSD card and using an external SSD for storage

<div class="mt-4" id="bkmrk--6"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body"><div class="markdown-heading">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#installing-umbrelos-on-a-microsd-card-and-using-an-external-ssd-for-storage)</div><div class="markdown-alert markdown-alert-warning">  
</div></div></div></div></div></div><svg aria-hidden="true" class="octicon octicon-alert mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg>Warning

Installing umbrelOS on a microSD card is not recommended primarily because microSD cards have a limited number of write cycles. Over time, frequent read and write operations can cause the microSD card to wear out and fail, leading to system instability, data corruption, and potential data loss. Also, microSD cards generally offer lower performance and durability compared to NVMe or USB drives, which are better suited for the continuous operation required by umbrelOS. For a more reliable and long-lasting setup, it is advisable to boot from NVMe or USB storage.

In this configuration, you will install umbrelOS on a microSD card and then use a separate external SSD to store your data.

#### What you will need

<div class="mt-4" id="bkmrk-raspberry-pi-5-offic-1"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content"><div class="markdown-body"><div class="markdown-heading">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#what-you-will-need-1)</div>- Raspberry Pi 5
- Official Raspberry Pi power supply
- Ethernet cable
- microSD card (32GB or larger)
- External SSD

<div class="markdown-heading">  
</div></div></div></div></div></div>#### Steps

<div class="mt-4" id="bkmrk-download-the-latest%C2%A0-1"><div class="Layout Layout--flowRow-until-md Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end" data-view-component="true"><div class="Layout-main" data-view-component="true"><div class="gollum-markdown-content" id="bkmrk-download-the-latest%C2%A0-2"><div class="markdown-body"><div class="markdown-heading">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/getumbrel/umbrel/wiki/Install-umbrelOS-on-a-Raspberry-Pi-5#steps-1)</div>1. Download the latest [umbrelOS image](https://download.umbrel.com/release/latest/umbrelos-pi5.img.zip) for Rasberry Pi 5.
2. Download [Balena Etcher](https://etcher.balena.io/) on your computer. It is required to flash the umbrelOS image that you downloaded in the previous step to your microSD card.
3. Attach your microSD card to your computer (you may need a microSD card reader).
4. Flash the umbrelOS image to your microSD card using Balena Etcher. Once the flashing process is complete, safely eject the card from your computer.
5. Insert the microSD card into your Raspberry Pi 5.
6. Attach your external SSD to your Raspberry Pi 5 using an available USB port.
7. Connect your Raspberry Pi 5 to your network using an Ethernet cable.
8. Power on your Raspberry Pi 5 using the official Raspberry Pi power supply. Third-party power supplies often cannot deliver the required current or maintain a stable voltage, leading to system instability, microSD card corruption, and corruption or data loss on connected hard drives.
9. And that's it! Wait for a few minutes for umbrelOS to boot up. You can access umbrelOS by navigating to [http://umbrel.local](http://umbrel.local/) on any device connected to the same network.

</div></div></div></div></div>
### Installieren von Apps über Comandline

#### 3.1 Test using an umbrelOS development environment on your local machine

<div class="markdown-heading" dir="auto" id="bkmrk--10">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg>](https://github.com/getumbrel/umbrel-apps/blob/master/README.md#31-test-using-an-umbrelos-development-environment-on-your-local-machine)</div>The umbrelOS development environment (umbrel-dev) requires a Docker environment that exposes container IPs to the host. This is how Docker natively works on Linux and can be done with OrbStack on macOS and WSL 2 on Windows.

1\. Install [OrbStack](https://orbstack.dev/) on macOS or [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/install) with Docker Desktop on Windows.

2\. Clone the [getumbrel/umbrel](https://github.com/getumbrel/umbrel) repo.

From the root of the cloned repo, run the following command to view the available umbrel-dev commands:

```
npm run dev help
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--12"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>To start the development environment, run the following command:

```
npm run dev
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--13"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div><svg aria-hidden="true" class="octicon octicon-info mr-2" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg>Note

If this is your first time running the development environment, it may take a while to build the OS image locally on your machine.

Once initialized, umbrelOS will be accessible at [http://umbrel-dev.local](http://umbrel-dev.local/).

3\. Copy the app's directory (with any .gitkeep files excluded) to the app-store directory on umbrel-dev.

To do this, we run the following command on our local machine:

```
rsync -av --exclude=".gitkeep" <path-to-your-forked-repo-on-local-machine>/btc-rpc-explorer umbrel@umbrel-dev.local:/home/umbrel/umbrel/app-stores/getumbrel-umbrel-apps-github-53f74447/
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--14"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>If you are asked for a password during the transfer, use the password that you set when you created your umbrelOS account.

4\. Install the app.

From the umbrelOS homescreen, go to the App Store and navigate to BTC RPC Explorer. Click on the "Install" button and wait for the app to install.

You can also install the app from the command line. umbrelOS provides a web terminal that can be accessed via Settings &gt; Advanced Settings &gt; Terminal &gt; umbrelOS, or you can use the umbrel-dev scripts to install the app using the umbreld RPC server:

```
npm run dev client -- apps.install.mutate -- --appId btc-rpc-explorer
```

```
umbreld client apps.uninstall.mutate --appId plex # zum installeren auf dem Umbrel 
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--15"><div class="zeroclipboard-container"><svg aria-hidden="true" class="octicon octicon-copy js-clipboard-copy-icon" data-view-component="true" height="16" version="1.1" viewbox="0 0 16 16" width="16"><path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path></svg></div></div>That's it! Our BTC RPC Explorer app should now be accessible at [http://umbrel-dev.local:3002](http://umbrel-dev.local:3002/)

To uninstall the app, you can right-click on the app's icon on your homescreen and click on the "Uninstall" button. You can also uninstall the app using the umbrel-dev scripts:

```
npm run dev client -- apps.uninstall.mutate -- --appId btc-rpc-explorer
```

## Veraltet und wohl aus früheren Versionen

<span style="color: rgb(224, 62, 45);">Can you try again to install manually: </span>

<span style="color: rgb(224, 62, 45);">~/umbrel/scripts/app uninstall tailscale</span>

<span style="color: rgb(224, 62, 45);">Then</span>

<span style="color: rgb(224, 62, 45);">~/umbrel/scripts/app install tailscale</span>

<span style="color: rgb(224, 62, 45);">You can replace the name of the app as it's listed here: https://github.com/getumbrel/umbrel-apps/tree/master</span>

<span style="color: rgb(224, 62, 45);">Let me know if any issue</span>

# Vaultwarden (Bitwarden) installieren

## Vorgehensweise

[Github AndresHardware](https://github.com/AndresHardware/Vaultwarden/tree/main)

##### Alternative implementation of the Bitwarden server API written in Rust and compatible with [upstream Bitwarden clients](https://bitwarden.com/download/)\*, perfect for self-hosted deployment where running the official resource-heavy service might not be ideal.

<div class="markdown-heading" dir="auto" id="bkmrk-">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#alternative-implementation-of-the-bitwarden-server-api-written-in-rust-and-compatible-with-upstream-bitwarden-clients-perfect-for-self-hosted-deployment-where-running-the-official-resource-heavy-service-might-not-be-ideal)</div>📢 Note: This project was known as Bitwarden\_RS and has been renamed to separate itself from the official Bitwarden server in the hopes of avoiding confusion and trademark/branding issues.

**This project is not associated with the [Bitwarden](https://bitwarden.com/) project nor Bitwarden, Inc.**

⚠️**IMPORTANT**⚠️: When using this server, please report any bugs or suggestions to us directly (look at the bottom of this page for ways to get in touch), regardless of whatever clients you are using (mobile, desktop, browser...). DO NOT use the official support channels.

<div class="markdown-heading" dir="auto" id="bkmrk--2">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#%EF%B8%8Fimportant%EF%B8%8F-when-using-this-server-please-report-any-bugs-or-suggestions-to-us-directly-look-at-the-bottom-of-this-page-for-ways-to-get-in-touch-regardless-of-whatever-clients-you-are-using-mobile-desktop-browser-do-not-use-the-official-support-channels)</div>---

#### Host your own Vaultwarden with NGINX

<div class="markdown-heading" dir="auto" id="bkmrk--5">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#host-your-own-vaultwarden-with-nginx)</div>Diese Repository zeigt dir, wie du deinen eigenen Vaultwarden Passwort Manager Server erstellen und konfigurieren kannst. Ich nutzte hierfür Proxmox, das ganze kann aber auch mit einem RaspberryPi oder vergleichbarer Hardware gemacht werden. Eine Ausführliche Anleitung findet du auf meinem [YouTube Kanal](https://www.youtube.com/@andreshardware).

#### Features

<div class="markdown-heading" dir="auto" id="bkmrk--7">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#features)</div>Basically full implementation of Bitwarden API is provided including:

- Organizations support
- Attachments and Send
- Vault API support
- Serving the static files for Vault interface
- Website icons API
- Authenticator and U2F support
- YubiKey and Duo support
- Emergency Access

#### Vorbereitungen

Verwende ein aktuelles Debian System in einem Proxmox Container

```
apt-get update && apt-get upgrade -y && apt autoremove -y
apt install curl
apt install argon2

curl -sSL https://get.docker.com | sh
apt install docker-compose -y
```

<div class="zeroclipboard-container" id="bkmrk--11">  
</div>#### Installation

<div class="markdown-heading" dir="auto" id="bkmrk--12">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#installation)</div>```
mkdir docker
cd docker
mkdir Vaultwarden
mkdir Vaultwarden
nano docker-compose.yml
```

<div class="zeroclipboard-container" id="bkmrk--14">  
</div>#### Admin-Token als Hash Wert erstellen

<div class="markdown-heading" dir="auto" id="bkmrk--15">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#admin-token-als-hash-wert-erstellen)</div>Nach dem generieren des Admin-Token kann dieser in die Docker-Compose Datei eingefügt werden, hierbei muss vor jedem "$"- Zeichen ein weiteres "$" ergänzt werden!

```
# Using the Bitwarden defaults
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--17"><div class="zeroclipboard-container">  
</div></div>#### Importieren der docker-compose.yml Datei

```
version: '3'

services:
  vaultwarden:
    restart: always
    container_name: vaultwarden
    image: vaultwarden/server:latest
    volumes:
      - ./vw-data/:/data/
    ports:
      - 80:80
    environment:
      - SMTP_HOST=smtp.gmail.com
      - SMTP_FROM=yourmailadress@gmail.com
      - SMTP_FROM_NAME=Vaultwarden
      - SMTP_SECURITY=force_tls
      - SMTP_PORT=465
      - SMTP_USERNAME=yourmailadress@gmail.com
      - SMTP_PASSWORD=YourAppPasswort
      - SMTP_TIMEOUT=30
      - SMTP_AUTH_MECHANISM="Plain"
      - LOGIN_RATELIMIT_MAX_BURST=10
      - LOGIN_RATELIMIT_SECONDS=60
      - DOMAIN=yourDomain or IP-Adress
      - INVITATION_ORG_NAME=HomeVault
      - INVITATIONS_ALLOWED=true
      - ADMIN_TOKEN=YourArgon2 key or Passwort
      - SIGNUPS_ALLOWED=true
      - SIGNUPS_DOMAINS_WHITELIST=example.com,mydomain.net,myotherdomain.org
      - SIGNUPS_VERIFY=true
      - SIGNUPS_VERIFY_RESEND_TIME=3600
      - SIGNUPS_VERIFY_RESEND_LIMIT=6
      - EMERGENCY_ACCESS_ALLOWED=true
      - SENDS_ALLOWED=true
      - WEB_VAULT_ENABLED=true
```

In der yml-Datei SMTP einstellungen Anpassen. Die Domain Eintragen und den AdminToken generieren.

<div class="markdown-heading" dir="auto" id="bkmrk--18">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#importieren-der-docker-composeyml-datei)</div>Kopiere nun den Inhalt aus der docker-compose.yml.txt Datei in deine eben erstellte .yml datei und passe es entsprechend an.

Anschließend kann der Container ausgerollt werden.

```
docker-compose up -d
```

<div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" id="bkmrk--20"><div class="zeroclipboard-container">  
</div></div>#### Domain über Proxy Manager mit der IP Adresse verknüpfen

<div class="markdown-heading" dir="auto" id="bkmrk--21">[<svg aria-hidden="true" class="octicon octicon-link" height="16" version="1.1" viewbox="0 0 16 16" width="16"></svg>](https://github.com/AndresHardware/Vaultwarden/tree/main#domain-%C3%BCber-proxy-manager-mit-der-ip-adresse-verkn%C3%BCpfen)</div>Als nächstes die Domain mit der IP-Adresse des Vaultwarden verknüpfen und die SSL verschlüselung aktivieren.

### Update

<p class="callout warning">Noch nicht getestet</p>

Update über docker-compose   
Im Ordner in der die docker-compose.yml datei liegt folgendes eingeben:

```
docker-compose down
```

danach

```
docker-compose up
```

##  

## Alte Version

### Admin Zugang

Der Adminzugang ist erreichbar über domain.co/admin. Hier muss der Token eingegeben werden. Der ist da zu finden, wo er gespeichert ist.

#### Bitwarden installieren

[Protainer installieren](https://books.hhml.selfhost.co/books/linux/page/docker-docker-compose-und-portainer-installieren "Docker, Docker-Compose und Portainer installieren")

[Bitwarden im Dockercontainer installieren mithilfe von Portainer](https://www.youtube.com/watch?v=nShKWcPD6w0)

**Volume**

Volumes &gt; Add volume

[![grafik.png](https://wiki.hhml.selfhost.co/uploads/images/gallery/2023-03/scaled-1680-/grafik.png)](https://wiki.hhml.selfhost.co/uploads/images/gallery/2023-03/grafik.png)

Name: vaultvarden

**Container**

Add Container

<div class="page-content" id="bkmrk-name%3A-vaultwarden-im"><div class="page-content"><div dir="auto">- Name: Vaultwarden
- image: vaultwarden/server:latest

</div></div></div><span style="background-color: rgb(126, 140, 141); color: rgb(255, 255, 255);">+publish a new network port</span>

`host: 8080 contianer: 80`

**Advanced Container settings**

**Volume**

<span style="color: rgb(255, 255, 255); background-color: rgb(126, 140, 141);">+map additional volume</span>

Container: `/data`

Select a Volume (vorher erstelltes Volume): `vaultwarden `

**Restart policy**

Always

<span style="background-color: rgb(53, 152, 219);">**Deploy the Conainer**</span>

[![grafik.png](https://wiki.hhml.selfhost.co/uploads/images/gallery/2023-03/scaled-1680-/4Y4grafik.png)](https://wiki.hhml.selfhost.co/uploads/images/gallery/2023-03/4Y4grafik.png)

[Nginx einrichten](https://books.hhml.selfhost.co/books/linux/page/nginx-reverse-proxy "Nginx Reverse Proxy")

Um immer den aktuellsten Vaultwarden zu verwenden am besten [Watchtower ](https://books.hhml.selfhost.co/books/linux/page/watchtower "Watchtower")einrichten

### Admin-Token

der wird ebenfalls in der Config-Json Datei gespeichert

<div class="page-content" id="bkmrk-version-%233-erstellt%3A"><div dir="auto">  
</div>---

<div class="text-muted text-small"><div class="entity-meta"><svg class="svg-icon" data-icon="history" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Version #3   
<svg class="svg-icon" data-icon="star" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Erstellt: 25 October 2022 09:28:12 von hermann   
<svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> </svg>Zuletzt aktualisiert: 25 October 2022 11:02:23 von hermann</div></div></div>

# Sterling PDF

Ein Server, der alles erdenkliche mit PDF's anstellen kann

## Installation

#### Docker installieren

Falls Docker fehlt, installieren Sie es:

```
sudo apt update sudo apt install ca-certificates curl 
sudo install -m 0755 -d /etc/apt/keyrings 
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc 
sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 
sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 
sudo usermod -aG docker $USER && newgrp docker 
sudo systemctl enable --now docker
```

#### Stirling-PDF starten (docker run)

Erstellen Sie ein Verzeichnis und starten Sie den Container:

<div class="w-full md:max-w-[90vw]" id="bkmrk-text-mkdir-%7E%2Fstirlin"><div class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler"><div class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end sm:sticky sm:top-xs"><div class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"><div class="border-subtlest ring-subtlest divide-subtlest bg-subtler">  
</div></div></div><div class="-mt-xl"><div><div class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-lg text-xs font-thin" data-testid="code-language-indicator">text</div></div><div>`mkdir ~/stirling-pdf && cd ~/stirling-pdfmkdir configs trainingData logs customFilesdocker run -d \  --name stirling-pdf \  -p 8080:8080 \  -v $(pwd)/configs:/configs \  -v $(pwd)/trainingData:/usr/share/tesseract-ocr/5/tessdata \  -v $(pwd)/logs:/logs \  -v $(pwd)/customFiles:/customFiles \  -e DOCKER_ENABLE_SECURITY=true \  -e SECURITY_ENABLELOGIN=true \  -e SECURITY_INITIALLOGIN_USERNAME=admin \  -e SECURITY_INITIALLOGIN_PASSWORD=deinPasswort \  --restart unless-stopped \  stirlingtools/stirling-pdf:latest`</div></div></div></div>Zugriff unter `http://deine-ip:8080`, Login mit admin/deinPasswort.​

#### Mit Docker Compose (empfohlen)

Erstellen Sie `docker-compose.yml`:

<div class="w-full md:max-w-[90vw]" id="bkmrk-text-version%3A-%273.3%27-"><div class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler"><div class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end sm:sticky sm:top-xs"><div class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"><div class="border-subtlest ring-subtlest divide-subtlest bg-subtler">  
</div></div></div><div class="-mt-xl"><div><div class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-lg text-xs font-thin" data-testid="code-language-indicator">text</div></div><div>`version: '3.3'services:  stirling-pdf:    image: stirlingtools/stirling-pdf:latest    container_name: stirling-pdf    ports:      - '8080:8080'    volumes:      - ./configs:/configs      - ./trainingData:/usr/share/tesseract-ocr/5/tessdata      - ./logs:/logs      - ./customFiles:/customFiles    environment:      - DOCKER_ENABLE_SECURITY=true      - SECURITY_ENABLELOGIN=true      - SECURITY_INITIALLOGIN_USERNAME=admin      - SECURITY_INITIALLOGIN_PASSWORD=deinPasswort    restart: unless-stopped`</div></div></div></div>Führen Sie `docker compose up -d` aus. Updates: `docker compose pull && docker compose up -d`