1
0
mirror of https://github.com/tiyn/wiki.git synced 2025-10-10 01:41:23 +02:00

Structure:

- main wiki folder added
- removed partition into software-types
- thinking about partition by software/general
This commit is contained in:
TiynGER
2020-10-22 20:13:26 +02:00
parent 8b26722073
commit f04a6752f7
45 changed files with 31 additions and 35 deletions

60
wiki/airsonic.md Normal file
View File

@@ -0,0 +1,60 @@
# Airsonic
## Setup Server
### Docker
The official container and documentation was made by [linuxserver](https://hub.docker.com/r/linuxserver/airsonic).
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ---- | -------- | ------- |
| PUID | UserID | |
| PGID | GroupID | |
| TZ | Timezone | |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ----------------------- |
| airsonic\_config | /config | Configuration files |
| airsonic\_media | /media | Various other media |
| media\_playlists | /playlists | Location for playlists |
| media\_music | /music | Location for music |
| media\_audiobooks | /audiobooks | Location for audiobooks |
| media\_podcasts | /podcasts | location for podcasts |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 4040 | 4040 | TCP | WebUI |
#### Rebuild
```
#!/bin/sh
docker stop airsonic
docker rm airsonic
docker pull linuxserver/airsonic
docker run --name=airsonic \
--restart unless-stopped \
-p 4040:4040 \
-v airsonic_config:/config \
-v airsonic_media:/media \
-v media_playlists:/playlists \
-v media_music:/music \
-v media_audiobooks:/audiobooks \
-v media_podcasts:/podcasts \
-e PUID=0 \
-e PGID=0 \
-e TZ=Europe/Berlin \
-d linuxserver/airsonic
```

View File

@@ -0,0 +1,64 @@
# Thinkpad X220
These are a bunch of useful programs if you own a thinkpad X220.
This guide is done in collaboration with [rvbg.eu](https://wiki.rvbg.eu).
## Install Gfx drivers
`yay -S xf86-video-intel`
## Fan controlling
- ` yay -S lm_sensors thinkfan` - Install the needed utilities
- `sudo modprobe thinkpad_acpi` - After that load the kernel module thinkpad_acpi
- `sudo cp /usr/share/doc/thinkfan/examples/thinkfan.conf.simple /etc/thinkfan.conf` - Copy and configure the config file
- `systemctl start thinkfan` - Start the thinkfan service
- `sudo thinkfan -n` - Check the output
`systemctl enable thinkfan.service` - enable the thinkfan service
## Change brightness via keyboard
- `sudo vim /boot/loader/entries/arch.conf` - Open the bootloader configuration
- Go to the `options` line.
Append the following.
```
acpi_osi="!Windows 2012"
```
- `shutdown -r now` - Reboot the system
## Activate battery options
- `yay -S tlp` - Install the service
- `yay -S acpi_call` - Enables battery charging stop at given capacity
- `sudo vim /etc/tlp.conf` - Open the battery options
- Change the following lines
```
START_CHARGE_THRESH_BAT0=80
STOP_CHARGE_THRESH_BAT0=90
```
The battery will start charging at 80 percent and stop charging at 90.
- `sudo tlp start` - Start service and save changed options
- `sudo systemctl enable tlp.service` - Enable the service
## Setup Thinkpad Dock
- `yay -S dockd` - Install the docking service
- `yay -S xrandr arandr` - Instll multimonitor tools
- Dock the system
- `arandr` - Setup the monitor configuration
- `dockd --config docked` - Save the changes (has to maybe be stopped by `CTRL + C`)
- Undock the system
- `arandr` - Setup the monitor configuration
- `dockd --config undocked` - Save the changes (has to maybe be stopped by `CTRL + C`)
- `systemctl enable acpid` - Activate ACPI listener
- `systemctl start acpid` - Start ACPI listener
Scripts to change configuration at docking/undocking
- For the docked configuration use `vim /etc/dockd/dock.hook`
- For the undocked configuration use `vim /etc/dockd/undock.hook`

View File

@@ -0,0 +1,170 @@
# Arch installation with LUKS encryption and LVM
This is the English version of the [German installation guide on rvbg.eu](https://wiki.rvbg.eu/#arch/installation.md).
This guide is based upon a [german arch wiki entry](https://wiki.archlinux.de/title/Moderne_Installation_mit_UEFI_und_Verschlüsselung).
At the end of this guide a fully functional Arch Linux will be installed.
## 1. Preparation
Ahead of the installation an Arch boot-stick has to be created. The iso-file can be found on the [official website](https://www.archlinux.org/download/).
The iso can be written on an USB-stick using `dd`.
After that the USB can be plugged in the system on which Arch should be installed.
Boot the target system and select `Boot Arch Linux (x86_64)`.
If you need to set the keyboard layout to anything other than english you can temporarily do so by using the `loadkeys` command.
This has to be followed by your country id (for example a german keyboard layout would be `de`,`de-latin1` or `de-latin1-nodeadkeys`.
## 2. Formatting of the target drive
Using `lsblk` you can list all the drives and partitions.
Select a drive to install Arch on.
In this step you can see if old partitions need to be deleted.
For reasons of simplicity the following guide will assume the selected drive to be `/dev/sda`.
### Clear disk completely:
This step can take quite a while especially for large drives.
- `dd status=progress if=/dev/zero of=/dev/sda`
Now all partitions should be removed.
### Create new partitions:
If you miss click during the progress of the following commands you can press `CTRL+C` to close the program.
No changes will be made until the confirmation at the end.
The swap partition will be created later under lvm.
- `gdisk /dev/sda`
- `N` - Create a new empty partition table
- `↵ Enter` - Create a partition
- `↵ Enter` - Confirm first sector
- `+512M` - Assign size of 512 MB for the first partition
- `ef00` - Make the partition bootable
- `n` - Create a second partition
- `↵ Enter` - Confirm creation of partition
- `↵ Enter` - Confirm first sector
- `↵ Enter` - Confirm last sector
- `↵ Enter` - Confirm partition type
- `P` - Show created partitions
- `W` - Save all changes
- `Y` - Confirm saving changes
## 3. Encryption
We need to find out which partitions is the one we want to encrypt.
Using `blkid | grep /dev/sda` all partitions we created get listed.
The right partition has the label `Linux filesystem`.
For this guide this partition is assumed to be `/dev/sda2`.
- `modprobe dm-crypt` - load kernelmodule for encryption
- `cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2` - encryption
- confirm with `YES`
- Now you can assign a passphrase.
The passphrase has to be entered at boot to decrypt the system.
Recovering of this passphrase is **not** possible.
## 4. Setup LVM
- `cryptsetup luksOpen /dev/sda2 lvm` - Opening encrypted partition and mapping it to `/dev/mapper/lvm`
- `pvcreate /dev/mapper/lvm` - Create a LVM physical volume
- `vgcreate main /dev/mapper/lvm` - Create LVM Volume Group
- `lvcreate -L 16G -n swap main` - Create Swap in LVM (recommended: swap size is equal to ram size)
- `lvcreate -l 100%FREE -n root main` - Create LVM Logical Volume for /
## 5. Create filesystems and mounting them temporarily
We have to find out which partition is our boot-partition.
Using `blkid | grep /dev/sda` once again, we can identify it by looking for the `EFI system partition` label.
The guide assumes this partition to be at `/dev/sda1`.
- `mkfs.fat -F 32 -n UEFI /dev/sda1` - Assign filesystem of EFI partition
- `mkfs.ext4 -L root /dev/mapper/main-root` - Assign filesystem of root partition
- `mkswap /dev/mapper/main-swap` - Assign swap filesystem
Now the created filesystems will be mounted for the installation.
- `mount /dev/mapper/main-root /mnt` - Mounting root partition
- `mkdir /mnt/boot`
- `mount /dev/sda1 /mnt/boot` - Mount EFI partition
- `swapon /dev/mapper/main-swap` - Mounting swap partition
## 6. Prepare base installation (optional)
In this step the country specific mirrorserver for the installation will be configured.
This will improve the download speed.
- `cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak` - Create a backup of mirrorlist
- `grep -E -A 1 ".*Germany.*$" /etc/pacman.d/mirrorlist.bak | sed '/--/d' > /etc/pacman.d/mirrorlist` - Example command to only use *German* mirrors
- `cat /etc/pacman.d/mirrorlist` - Check if the file is to your liking. If it is not, you can just recover by using `mirrorlist.bak`
## 7. Starting base installation
Now you need a working internet connection.
Plug in your lan cable or use `wifi-menu` to get a wireless connection.
- `pacstrap /mnt base base-devel dosfstools gptfdisk lvm2 linux linux-firmware vim networkmanager` - Installation of main system with needed tools
- `genfstab -Up /mnt > /mnt/etc/fstab` - creation of fstab
- `arch-chroot /mnt` - Switch into the newly installed system
- `echo ArchLinux > /etc/hostname` - Assign hostname. `ArchLinux` can be changed for any name of your preference.
## 8. Set Region and Language
- `echo LANG=en\_US.UTF-8 > /etc/locale.conf` - Assign system Language to be english (you can use other languages, look into the `/etc/locale.gen` for a list of all available languages)
- `vim /etc/locale.gen` - Assigning system language by uncomment the lines depending on your needs.
In this example:
```
en_US.UTF-8 UTF-8
```
- `locale-gen` - Generate languages
- `echo KEYMAP=de-latin1-nodeadkeys > /etc/vconsole.conf` - set the keymap
- `tzselect` - Set region
# 9. Configure and create kernel-image
- `vim /etc/mkinitcpio.conf`
- Search the line `MODULES=()` and change it to:
`MODULES=(ext4)`
- Search the line `HOOKS=([...])` and change it to:
`HOOKS=(base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown)`
- `mkinitcpio -p linux` - generate Kernel-Image
## 10. Install and configure UEFI bootloader
- `bootctl install` - Prepare bootloader
- `ls -l /dev/disk/by-uuid` - find out the UUID
- `lsblk -no UUID /dev/sda2 | head -n1 > /boot/loader/entries/arch.conf` - print the UUID in your configuration file
- `vim /boot/loader/entries/arch.conf` - Create configuration
- Change the config to look similar to this:
```
title Arch Linux
linux /vmlinuz-linux
initrd /initramfs-linux.img
options cryptdevice=UUID=<enter your uuid here>:lvm:allow-discards root=/dev/mapper/main-root resume=/dev/mapper/main-swap rw quiet
```
- `cp /boot/loader/entries/arch.conf /boot/loader/entries/arch-fallback.conf` - Create a fallback
- `vim /boot/loader/loader.conf` - Create loader configuration
- Insert the following text
```
timeout 0
default arch
```
## 11. Finishing base installation
- `passwd` - set password for the root account
- `exit` - exit the installed system
- `umount /mnt/{boot,}` - unmount all partitions
- `shutdown now` - shutdown device
- Now remove the Arch boot-stick
- Start the device again
If the system is installed in a virtual environment or a system with deactivated UEFI, don't forget to enable the EFI option, otherwise the system won't boot.
Now you can follow my larbs installation script (`curl -o larbs.sh https://raw.githubusercontent.com/tiyn/larbs/master/larbs.sh` or go on to other guides.
## Changelog and versions
> 03.04.2020 - Version 1.1en (based on 03.04.2020 - Version 1.1)
>
> 05.04.2020 - Version 2.1en (based on 05.04.2020 - Version 2.1)
>
> 28.05.2020 - Version 3.0en

View File

@@ -0,0 +1,15 @@
# Intel Graphics
## Screen Tearing
Linux can sometimes have problems with screen tearing.
To get this working you need to change the `/etc/X11/xorg.conf.d/20-intel.conf` to:
```
Section "Device"
Identifier "Intel Graphics"
Driver "intel"
Option "TearFree" "true"
EndSection
```
This was found on [maketecheasier](https://www.maketecheasier.com/get-rid-screen-tearing-linux).

37
wiki/bare-git.md Normal file
View File

@@ -0,0 +1,37 @@
# Bare Git
## Setup Server
### Docker
The official container and documentation was made by [jkarlos](https://hub.docker.com/r/jkarlos/git-server-docker).
##### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | ----------------- | --------------------------- |
| git-server-repos | /git-server/repos | storage for git repos |
| git-server-keys | /git-server/keys | storage for user ssh keys |
##### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ------------------------------------- |
| 22 | 2222 | TCP | ssh port for accessing the git server |
##### Rebuild
```
#!/bin/sh
docker stop git-server
docker rm git-server
docker pull jkarlos/git-server-docker:latest
docker run --name git-server \
--restart unless-stopped \
-p 2222:22 \
-v git-server_repos:/git-server/repos \
-v git-server_keys:/git-server/keys \
-d jkarlos/git-server-docker
```

50
wiki/bind.md Normal file
View File

@@ -0,0 +1,50 @@
# Bind
## Setup Server
### Docker
The official container and documentation was made by [ventz](https://hub.docker.com/r/ventz/bind).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ----------------------- |
| bind\_cache | /var/cache/bind | cache for dns |
| bind\_etc | /etc/bind | configuration for dns |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------------- |
| 53 | 53 | TCP | dns protocol port |
| 53 | 53 | UDP | dns protocol port |
#### Additional
There are some special variables to set.
| Flag | Usage |
| ----- | ------------------------------------------------------- |
| --dns | set two of these flags for specific dns forward servers |
#### Rebuild
```
#!/bin/sh
docker stop bind
docker rm bind
docker pull ventz/bind:latest
docker run --name bind \
--restart unless-stopped \
--dns=1.1.1.1 --dns=8.8.8.8 \
-p 53:53/udp \
-p 53:53 \
-v bind_cache:/var/cache/bind \
-v bind_etc:/etc/bind \
-d ventz/bind:latest
```

44
wiki/cups.md Normal file
View File

@@ -0,0 +1,44 @@
# Cups
## Setup Server
### Docker
The official container and documentation was made by [olbat](https://hub.docker.com/r/olbat/cupsd).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ------------------------------- |
| cups | /etc/cups | configuration for printers, etc |
| /var/run/dbus | /var/run/dbus | connection to host dbus |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ------------------ |
| 631 | 631 | TCP | cups server webui |
#### Additional
The default username is `print`, the default password is `print`.
#### Rebuild
```
#!/bin/sh
docker stop cups
docker rm cups
docker pull olbat/cupsd:latest
docker run --name cups \
--restart unless-stopped \
--net=host \
-p 631:631 \
-v /var/run/dbus:/var/run/dbus \
-v cups:/etc/cups/ \
-d olbat/cupsd:latest
```

19
wiki/disk-management.md Normal file
View File

@@ -0,0 +1,19 @@
# Disk Management
## Grow non-LVM ext4 partition
ATTENTION: Please note that the partition to enlarge has to be the last one with the free space after it.
SSH into the VM.
- run `lsblk` check if the disk size has changed
- if not `reboot` the virtual machine
In the following it is assumed that the partition to enlarge is `/dev/sda2`
- change the size of the partition with `parted /dev/sda`
- inside of parted run `print free` and check where the free space after your partition ends
- run `resizepart` and follow the instructions; End is the number you checked in the last step
- `quit` parted
Now you need to resize the filesystem with `resize2fs /dev/sda2`.

10
wiki/docker.md Normal file
View File

@@ -0,0 +1,10 @@
# Docker
Docker is a virtualization software that deploys docker containers.
Due to easy handling and reproducable environments it is a useful tool.
## Enable Nvidia GPUs
To use Nvidia GPUs with docker you need to install the nvidia-cuda-toolkit.
There is a [guide on marmelab](https://marmelab.com/blog/2018/03/21/using-nvidia-gpu-within-docker-container.html) that focusses on that topic.

44
wiki/dovecot.md Normal file
View File

@@ -0,0 +1,44 @@
# Dovecot
## Setup Server
### Docker
The official container and documentation was made by [tvial](https://hub.docker.com/r/tvial/docker-mailserver).
It contains dovecot, antispam, antivirus, ssl, etc.
#### Configuration
The configuration is done automatically using scripts by tvial.
First you need to download the essential setup files.
```
curl -o setup.sh https://raw.githubusercontent.com/tomav/docker-mailserver/master/setup.sh; chmod a+x ./setup.sh
curl -o docker-compose.yml https://raw.githubusercontent.com/tomav/docker-mailserver/master/docker-compose.yml.dist
curl -o .env https://raw.githubusercontent.com/tomav/docker-mailserver/master/.env.dist
curl -o env-mailserver https://raw.githubusercontent.com/tomav/docker-mailserver/master/env-mailserver.dist
```
After that you need to edit the `.env` and the `env-mailserver` files to configure the mailserver.
You then need to start the container with the `rebuild.sh` and add email accounts using the following command.
`./setup.sh email add <user@domain> (<password>)`
And finally generate the DCIM keys and rebuild once again.
`./setup.sh config dkim`
Afterwards you're ready to go by once again running the `rebuild.sh` file.
#### Rebuild
```
#!/bin/sh
docker-compose down
docker pull tvial/docker-mailserver:latest
docker-compose up -d
```

View File

@@ -0,0 +1,23 @@
# File synchronization
Tools to synchronize data and so called clouds are pretty handy to use files on different machines.
There are tools with a main server and there are tools that don't need them.
## Synchronizing with main server
The biggest advantage of having a main server contain your data is that - as long as the server is online -
you can sync as you please.
You do not need to care which machines are online to get all the files you need.
If you are talking about a cloud, this is this.
- [Owncloud](setups/owncloud.md) is a self-hostable, open-source file hosting service that can be dockerized.
- [Onedrive](setups/onedrive.md) is a very popular piece of software despite being proprietary.
You can not self-host it, but you can run a dockerized client.
## Synchronizing without main server
If you can bare the difficulties ascending due to the mentioned above problems, this is probably a more
safe way to "host" files.
There is no single server as point of attack with all your data.
- [Syncthing](setups/syncthing.md) is a free and open-source peer-to-peer file synchronization tool that can be dockerized.

35
wiki/flask.md Normal file
View File

@@ -0,0 +1,35 @@
# Flask
## Setup Server
### Docker
The original container and documentation are made by [tiynger](https://hub.docker.com/r/tiynger/pythonflask).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ----------- | --------------- | ------------------------------- |
| app | /flask | directory for flask application |
#### Ports
Set the following volumes with the -p tag.
| Container-Port | Recommed outside port | Protocol | Description |
| -------------- | --------------------- | -------- | ----------- |
| 5000 | 80 | TCP | HTTP port |
#### Rebuild
```
#!/bin/sh
docker stop python-flask
docker rm python-flask
docker pull tiynger/pythonflask:latest
docker run --name python-flask \
--restart unless-stopped \
-p "5000:5000" \
-v python-flask:/flask \
-d tiynger/pythonflask:latest
```

44
wiki/foldingathome.md Normal file
View File

@@ -0,0 +1,44 @@
# Folding-at-home
## Setup
### Docker
The official container and documentation was made by [johnktims](https://hub.docker.com/r/johnktims/folding-at-home).
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 7396 | 7396 | TCP | WebUI |
#### Additional
There are some special variables to set.
| Flag | Usage |
| ------- | -------------------------------------- |
| --user | set your username |
| --power | set the default power to fold at home |
| --team | set your teamid to contribute points |
##### GPU
To add a nvidia gpu add the `nvidia-docker-toolkit` or the recommended software for your gpu.
After that you can set you gpu to fold aswell by adding `--gpus=all`.
#### Rebuild
```
#!/bin/sh
docker stop folding-at-home
docker rm folding-at-home
docker pull johnktims/folding-at-home
docker run --name folding-at-home \
--restart unless-stopped \
-it \
-p 7396:7396 \
-d johnktims/folding-at-home \
--user=default \
--power=full \
--team=000000
```

27
wiki/git.md Normal file
View File

@@ -0,0 +1,27 @@
# Git
Git is probably the best version control system (VCS) there is.
It's easy and can be lightweight, but also has tons of possibilities for using graphical (/web) user interfaces.
## Client
The Client is pretty simple to understand.
With only a handfull of commands you should be able to get your versioning going.
- Arch based systems: `pacman -S git`
There is also an interactive [fixup guide by Seth Robertson](https://sethrobertson.github.io/GitFixUm/fixup.html).
## Server with web interface
Web interfaces for git are quite useful for easily showing code to other people.
Additionally it is easy to collaborate together.
- [Gitea](applications/gitea.md) is an open-source and selfhosted and can be dockerized.
## Server without graphical interface
If you don't need a bloated web-interface a more basic approach is more than enough.
- [git-server-docker](setups/bare-git.md) is a pretty basic docker-container for git.

138
wiki/gitea.md Normal file
View File

@@ -0,0 +1,138 @@
# Gitea
## Setup Server
### Docker
#### Gitea
##### Environment-variables
Set the following environment-variables in the `environment:` section of the docker-compose file.
| Name | Usage | Default |
| ------------------- | ------------------------------ | ------- |
| USER\_UID | User userid to run gitea | |
| USER\_GID | User groupid to run gitea | |
| DB\_TYPE | Specify database type | |
| DB\_HOST | Specify database host and port | |
| DB\_NAME | Specify Name of the database | |
| DB\_USER | Username for the database | |
| DB\_PASSWD | Password for the database | |
##### Volumes
Set the following volumes in the `volumes:` section of the docker-compose file.
| Volume-Name | Container mount | Description |
| ---------------- | ---------------------- | ------------------------------ |
| data | /data | storage for data of git server |
| /etc/timezone | /etc/timezone:ro | link timezone |
| /etc/localtime | /etc/localtime | link localtime |
##### Ports
Set the following ports in the `ports:` section.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ---------------------- |
| 3000 | 3000 | TCP | WebUI |
| 22 | 222 | TCP | ssh port of git server |
##### Networks
Set the following networks in the `networks:` section of the docker-compose file.
| Name | Usage |
| ----- | --------------------- |
| gitea | connect db with gitea |
##### Dependencies
Set the following dependencies in the `depends_on:` section of the docker-compose file.
| Name | Usage |
| ----- | --------------------- |
| db | Ensure db is running |
#### MySql
##### Environment-variables
Set the following environment-variables in the `environment:` section of the docker-compose file.
| Name | Usage | Default |
| ------------------- | ----------------------------- | ------- |
| MYSQL\_ROOT\_PASSWORD | set the mysql admin password | |
| MYSQL\_USER | set the mysql username | |
| MYSQL\_PASSWORD | set the mysql user password | |
| MYSQL\_Database | specify mysql database to use | |
##### Volumes
Set the following volumes in the `volumes:` section of the docker-compose file.
| Volume-Name | Container mount | Description |
| ---------------- | ---------------------- | ---------------------------- |
| mysql | /var/lib/mysql | storage for owncloud data |
##### Networks
Set the following networks in the `networks:` section of the docker-compose file.
| Name | Usage |
| ----- | --------------------- |
| gitea | connect db with gitea |
#### Rebuild
```
#!/bin/sh
docker-compose down
docker-compose up -d
```
#### Docker-Compose.yml
```
version: "2"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
- DB_TYPE=mysql
- DB_HOST=db:3306
- DB_NAME=gitea
- DB_USER=gitea
- DB_PASSWD=gitea
restart: unless-stopped
networks:
- gitea
volumes:
- data:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
depends_on:
- db
db:
image: mysql:5.7
restart: unless-stopped
environment:
- MYSQL_ROOT_PASSWORD=gitea
- MYSQL_USER=gitea
- MYSQL_PASSWORD=gitea
- MYSQL_DATABASE=gitea
networks:
- gitea
volumes:
- mysql:/var/lib/mysql
volumes:
data:
driver: local
mysql:
driver: local
```

35
wiki/gopher-proxy.md Normal file
View File

@@ -0,0 +1,35 @@
# Gopherproxy
## Setup Proxy
### Docker
The official container and documentation was made by [prologic](https://hub.docker.com/r/prologic/gopherproxy).
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ---------------------------------------- |
| 8000 | 8000 | TCP | port to proxy the gopher site as http to |
#### Additional
There are some special variables to set.
| Flag | Usage |
| ---- | ------------------------------------------------------------- |
| -uri | define the gopher site to proxy (just 'domain.tld' is enough) |
#### Rebuild
```
#!/bin/sh
docker stop gopheroverhttp
docker rm gopheroverhttp
docker pull prologic/gopherproxy
docker run --name gopheroverhttp \
--restart unless-stopped \
-p 8000:8000 \
-d prologic/gopherproxy \
-uri 'domain.tld'
```

43
wiki/gopher-server.md Normal file
View File

@@ -0,0 +1,43 @@
# Gopher Server
## Setup Server
### Docker
The official container and documentation was made by [tiynger](https://hub.docker.com/r/tiynger/gopherserver).
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ------------- | --------------------------------------------------- | --------- |
| SERVER\_NAME | set this to your IP/Domain (no "gopher://" needed!) | localhost |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| -------------------- | --------------- | ----------------------------- |
| gopherwebdir | /var/gopher | directory for the gopher page |
#### Ports
Set the following ports with the -p tag.
| Container port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | ---------- | ---------------------------- |
| 70 | 70 | TCP | port for the gopher-protocol |
#### Rebuild
```
#!/bin/sh
docker stop gopherserver
docker rm gopherserver
docker pull tiynger/gopherserver
docker run --name gopherserver \
--restart unless-stopped \
-p 70:70 \
-v gopherserver:/var/gopher \
-e SERVER_NAME='domain.tld' \
-d tiynger/gopherserver
```

43
wiki/hastebin.md Normal file
View File

@@ -0,0 +1,43 @@
# Hastebin
## Setup Server
### Docker
The official container and documentation was made by [rlister](https://hub.docker.com/r/rlister/hastebin).
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ------------ | ----------------------- | ------- |
| STORAGE_TYPE | Type to store the datas | file |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | -------------------------- |
| hastebin | /app/data | storage directory for data |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 7777 | 7777 | TCP | WebUI |
#### Rebuild
```
#!/bin/sh
docker stop hastebin
docker rm hastebin
docker pull rlister/hastebin:latest
docker run --name hastebin \
--restart unless-stopped \
-p 7777:7777 \
-v hastebin:/app/data \
-e STORAGE_TYPE=file \
-d rlister/hastebin:latest
```

70
wiki/homer.md Normal file
View File

@@ -0,0 +1,70 @@
# Homer
## Setup Server
### Docker
The official container and documentation was made by [b4bz](https://hub.docker.com/r/b4bz/homer).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ------------------------ | --------------- | ---------------------------------- |
| /current/dir/config.yml | /www/config.yml | configuration file for static page |
| homer | /www/assets | storage for icons, etc |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 8080 | 8080 | TCP | WebUI |
#### Rebuild
```
#!/bin/sh
docker stop homer
docker rm homer
docker pull b4bz/homer:latest
docker run --name homer \
--restart unless-stopped \
-p 8080:8080 \
-v /root/docker/homer/config.yml:/www/config.yml \
-v homer:/www/assets \
-d b4bz/homer:latest
```
#### Configuration
This is a sample config.yml:
```
title: "tmp"
subtitle: "tmp"
logo: "tmp"
footer: ""
message:
style: ""
title: "tmp"
content: "tmp"
links:
- name: "tmp"
icon: "tmp"
url: "tmp"
target: '_blank'
services:
- name: "tmp"
icon: "tmp"
items:
- name: "tmp"
logo: "tmp"
subtitle: "tmp"
tag: "tmp"
url: "tmp"
target: '_blank'
```

79
wiki/jellyfin.md Normal file
View File

@@ -0,0 +1,79 @@
# Jellyfin
## Setup Server
### Docker
The official container and documentation was made by [linuxserver](https://hub.docker.com/linuxserver/jellyfin).
This docker-rebuild is made up by a `docker-compose.yml` file.
#### Environment-variables
Set the following environment-variables in the `environment:` section of the docker-compose file.
| Name | Usage | Default |
| ------------------- | ---------------------------- | ------- |
| PUID | Userid to run the container | |
| PGID | Groupid to run the container | |
| TZ | specify the timezone | |
#### Volumes
Set the following volumes in the `volumes:` section of the docker-compose file.
| Volume-Name | Container mount | Description |
| ---------------- | ---------------------- | ------------------------------------ |
| config | /config | storage for config files of jellyfin |
| media\_movies | /data/movies | storage for movies |
| media\_tvshows | /data/tvshows | storage for tvshows |
| transcode | /transcode | tmp storage to transcode |
Because it is useful to have the possibility to use the `media_movies` and `media_tvshows` in multiple containers,
it is recommended to use them as external volumes (volumes section: `external: true` instead of `driver: local`).
To use the rebuild the volumes have to exist before creating the container (`docker volume create media_movies` and tvshows accordingly).
#### Ports
Set the following ports in the `ports:` section.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 8096 | 8096 | TCP | WebUI |
#### Rebuild
```
#!/bin/sh
docker-compose down
docker pull linuxserver/jellyfin:latest
docker-compose up -d
```
#### Docker-Compose.yml
```
version: "2"
services:
jellyfin:
image: linuxserver/jellyfin
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Berlin
volumes:
- config:/config
- media_movies:/data/movies
- media_tvshows:/data/tvshows
- transcode:/transcode
ports:
- 8096:8096
restart: unless-stopped
volumes:
config:
driver: local
transcode:
driver: local
media_movies:
external: true
media_tvshows:
external: true
```

51
wiki/khal.md Normal file
View File

@@ -0,0 +1,51 @@
# Khal
`khal` is a calendar you can use in your terminal.
To sync calendars you'll need `vdirsyncer` aswell.
## Setup
### Arch-Linux
- `pacman -S khal vdirsyncer` - Install needed packages
### Configuration
- To configure vdirsyncer edit a file in `~/.config/vdirsyncer/config`.
```
[general]
status_path = "~/.cache/vdirsyncer/status"
#calendar
[pair private_calendar]
a = "private_calendar_local"
b = "private_calendar_remote"
collections = ["from a", "from b"]
metadata = ["color"]
[storage private_calendar_local]
type = "filesystem"
path = "~/.local/share/pim/calendars/private_calendar"
fileext = ".ics"
[storage private_calendar_remote]
type = "caldav"
url = "https://<url>"
auth = "basic"
username = "<username>"
password = "<password>"
```
- `vdirsyncer discober && vdirsyncer metasync` - After that initialize vdirsyncer.
- `vdirsyncer sync` - Synchronize your data (put it in a crontab to run periodically)
- Edit the `~/.config/khal/config`
- Insert the following lines
```
[calendars]
[[calendars]]
path = ~/.local/share/pim/calendars/*/*
type = discover
```

47
wiki/khard.md Normal file
View File

@@ -0,0 +1,47 @@
# Khard
`khard` is a adressbook that runs in your terminal.
To sync the data using CardDAV you'll need `vdirsyncer` aswell.
## Setup
### Arch Linux
- `pacman -S khard vdirsyncer` - Install needed programs
### Configuration
- Edit the `~/.config/vdirsyncer/config`.
- Insert the following lines:
```
[general]
status_path = "~/.cache/vdirsyncer/status"
[pair private_contacts]
a = "private_contacts_local"
b = "private_contacts_remote"
collections = ["from a", "from b"]
[storage private_contacts_local]
type = "filesystem"
path = "~/.local/share/pim/contacts"
fileext = ".vcf"
[storage private_contacts_remote]
type = "carddav"
url = "https://<url>"
username = "<username>"
password = "<password>"
auth = "basic"
```
- `vdirsyncer discover && vdirsyncer metasync` - Initialize vdirsyncer
- `vdirsyncer sync` - Synchronize the addressbook (put this into a crontab to update periodically)
- Add and configure a config for khard
- `mkdir ~/.config/khard` - add a directory for the config
- `cp /usr/share/doc/khard/khard.conf.example ~/.config/khard/khard.conf` - Copy the example configuration
- Adjust `khard.conf` to your needs
#### Mutt
It is possible to use your khard-addressbook in mutt.
To see how it works check out the [Mutt](/#application/neomutt.md).

18
wiki/mail.md Normal file
View File

@@ -0,0 +1,18 @@
# Mail
Mail is not dead yet.
But most of the programs used to interact with them are total trash.
Nevertheless there are some really nice pieces of software to check out.
## Server
If you want to host your own mail-server there are solutions with and without interfaces.
- [Dovecot](setups/dovecot.md) is a simple mail server that can be dockerized and has no interface.
## Client
If you don't have a built-in web interface for your mail-server you need some software to access your mails.
And even if you have it can be useful to keep your mails synced locally on your pc.
- [Neomutt](setups/neomutt.md) is a terminal-based mail client, that has a simple interface.

79
wiki/mordhau.md Normal file
View File

@@ -0,0 +1,79 @@
# Mordhau
## Setup Server
### Docker
The official container and documentation was made by [tetricz](https://hub.docker.com/r/tetricz/mordhau-server).
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ---- | ---------------------------------------------------- | ------- |
| QUERYPORT | port for query mordhau | |
| GAME\_PORT | port for mordhau game | |
| BEACONPORT | port for mordhau beacon | |
| STEAM\_CONNECT | set to tell if you want to connect to steam | |
| STEAMID64 | set the serve owner steamid | |
| UID | users userid to run | |
| GID | users groupid to run | |
| GAME\_MODE | specify mordhau game mode | |
| PLAYER\_COUNT | set a playercount limit | |
| SERVER\_NAME | set a servername | |
| SERVER\_PASSWORD | set a password | |
| ADMIN\_PASSWORD | set an admin password | |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | -------------------- | ---------------------------------------- |
| mordhau | /serverdata/mordhau | storage for mordhau server relevant data |
| mordhau\_steamcmd | /serverdata/steamcmd | storage for steam related data |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------------- |
| 7777 | 7777 | UDP | mordhau internal |
| 15000 | 15000 | UDP | mordhau internal |
| 27015 | 27015 | UDP | mordhau internal |
#### Start
```
#!/bin/sh
docker pull tetricz/mordhau-server
docker run --name=mordhau \
--restart=unless-stopped \
-p 27015:27015/udp \
-p 7777:7777/udp \
-p 15000:15000/udp \
-v mordhau:/serverdata/mordhau \
-v mordhau_steamcmd:/serverdata/steamcmd \
-e QUERYPORT=27015 \
-e GAME_PORT=7777 \
-e BEACONPORT=15000 \
-e STEAM_CONNECT=True \
-e STEAMID64="tmp" \
-e UID=99 \
-e GID=100 \
-e GAME_MODE=SKM \
-e PLAYER_COUNT="16" \
-e SERVER_NAME="tmp" \
-e SERVER_PASSWORD="tmp" \
-e ADMIN_PASSWORD="tmp" \
tetricz/mordhau-server
```
#### Stop
```
#/bin/sh
docker stop mordhau
docker rm mordhau
```

12
wiki/music.md Normal file
View File

@@ -0,0 +1,12 @@
# Music
Music is a nice to have on your system.
There are multiple different approaches on how to get it working depending on your needs.
In general you need to consider if you want the music directly on your pc or access a server for it.
## Server/Client
If you want to keep your system clean of much data, you can use this kind of setup.
There are differences depending on your preffered client interface.
- [Airsonic](setups/airsonic.md) is a free fork of Subsonic, can be dockerized and has a web-interface.

45
wiki/neomutt.md Normal file
View File

@@ -0,0 +1,45 @@
# NeoMutt
Neomutt is a mail program that runs in your terminal.
It can be easily configured using mutt-wizard.
## Setup
### Arch-Linux
- `yay -S neomutt isync msmtp pass` - Install all dependecies
- Install mutt-wizard from [github](https://github.com/LukeSmithxyz/mutt-wizard) (AUR is not up to date)
#### Using mutt-wizard
After installation you're able to use the following commands, that will guide you through configuration.
`mw add` to add mailaccounts
`mw ls` to list existing ones
`mw pass` to revise passwords
`mw delete` to delete accounts
`mw purge` to delete all accounts and settings
`mw cron` toggle a cronjob to sync mail
## Usage
## Khard in NeoMutt
- Edit `~/.config/mutt/muttrc`
- Append the following lines.
```
set query_command= "khard email --parsable --search-in-source-files %s"
bind editor <Tab> complete-query
bind editor ^T complete
macro index,pager A \
"<pipe message>khard add-email<return>" \
"add the sender email address to khard"
```
- You should now be able to tab-complete email-addresses in neomutt
- You can also add new ones by pressing A

31
wiki/nginx.md Normal file
View File

@@ -0,0 +1,31 @@
# Nginx
## Setup Server
### Docker
The easiest way to configure and run nginx is [ncdt](https://github.com/nasourso/nginx-certbot-docker-tui) by nasourso.
So the first step is downloading it.
`wget https://raw.githubusercontent.com/nasourso/nginx-certbot-docker-tui/master/src/ncdt.sh`
You can just run the script and it will install all needed dependencies.
After that just go ahead and start the container.
You can then configure reverse proxies by adding websites.
#### Block remote port access
If you configured a reverse proxy to a port chances are you don't want the port to be accessed outside of the proxy.
Especially if you set up a authentication over nginx the open port will avoid the authentication.
This can be changed at the forwarded docker-service by replacing for example `-p 7000:7000` with `-p 172.17.0.1:7000:7000`.
This forces the docker container to only expose the port in the docker bridge network, effectively banning remote access.
#### Rebuild
```
#!/bin/sh
docker-compose down
docker pull nginx:latest
docker pull certbot/certbot:latest
docker-compose up -d
```

12
wiki/office-software.md Normal file
View File

@@ -0,0 +1,12 @@
# Office software
To get work done many people prefer office-like software.
There are numerous possibilities for this.
The software can vary in coverage and interface type.
## Table calculation
One of the most used file modification is done in csv or similar datatypes.
- [sc-im](setups/sc-im.md) is a simple table calculation program with a terminal based interface.

39
wiki/onedrive.md Normal file
View File

@@ -0,0 +1,39 @@
# Onedrive
## Setup Mirror
### Docker
The official container and documentation was made by [oznu](https://hub.docker.com/r/oznu/onedrive).
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ---- | -------- | ------- |
| PUID | UserID | |
| PGID | GroupID | |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ----------------------------------------------- |
| onedrive\_config | /config | configuration storage for the server connection |
| onedrive\_doc | /documents | storage for downloaded documents |
#### Rebuild
```
#!/bin/sh
docker stop onedrive
docker rm onedrive
docker pull oznu/onedrive:latest
docker run --name onedrive \
--restart unless-stopped \
-v onedrive_config:/config \
-v onedrive_doc:/documents \
-e PUID=$(id -u) \
-e PGID=$(id -g) \
-d oznu/onedrive:latest
```

43
wiki/openvpn.md Normal file
View File

@@ -0,0 +1,43 @@
# OpenVPN
## Setup Server
### Docker
The official container and documentation was made by [kylemanna](https://hub.docker.com/r/kylemanna/openvpn).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ------------------------ |
| ovpn | /etc/openvpn | storage for openvpn data |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ------------ |
| 1194 | 1194 | UDP | openvpn port |
#### Additional
There are some special variables to set.
| Flag | Usage |
| --------- | ---------------------- |
| --cap-add | add linux capabilities |
#### Rebuild
```
#!/bin/sh
docker stop openvpn
docker rm openvpn
docker pull kylemanna/openvpn
docker run --name openvpn \
--restart unless-stopped \
--cap-add=NET_ADMIN \
-p 1194:1194/udp \
-v ovpn:/etc/openvpn \
-d kylemanna/openvpn
```

123
wiki/owncloud.md Normal file
View File

@@ -0,0 +1,123 @@
# Owncloud
## Setup Server
### Docker
The official container and documentation was made by [owncloud](https://hub.docker.com/_/owncloud).
This docker-rebuild is made up by a `docker-compose.yml` file.
The services in this files are explained seperately.
#### Owncloud
##### Volumes
Set the following volumes in the `volumes:` section of the docker-compose file.
| Volume-Name | Container mount | Description |
| ---------------- | ---------------------- | ---------------------------- |
| owncloud | /var/www/html | storage for owncloud plugins |
| config | /var/www/html/config | storage for owncloud config |
##### Ports
Set the following ports in the `ports:` section.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 80 | 80 | TCP | WebUI |
#### Maria DB
##### Environment-variables
Set the following environment-variables in the `environment:` section of the docker-compose file.
| Name | Usage | Default |
| ------------------- | ---------------------------- | ------- |
| MYSQL\_ROOT\_PASSWORD | set the mysql admin password | |
##### Volumes
Set the following volumes in the `volumes:` section of the docker-compose file.
| Volume-Name | Container mount | Description |
| ---------------- | ---------------------- | ---------------------------- |
| mariadb | /var/lib/mysql | storage for owncloud data |
#### Rebuild
```
#!/bin/sh
docker-compose down
docker pull owncloud
docker pull mariadb
docker-compose up -d
```
#### Docker-Compose.yml
```
version: '3.1'
services:
owncloud:
image: owncloud
restart: unless-stopped
ports:
- 80:80
volumes:
- owncloud:/var/www/html
- config:/var/www/html/config
mariadb:
image: mariadb
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: pass
volumes:
- mariadb:/var/lib/mysql
volumes:
owncloud:
driver: local
mariadb:
driver: local
config:
driver: local
```
## Setup Client
### Docker
The original container and documentation are made by [tiynger](https://hub.docker.com/r/tiynger/owncloudclient)
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ----------- | --------------------------------------------------- | --------- |
| USER | username of OwnCloud server | admin |
| PASSWORD | password of OwnCloud server | admin |
| URL | url of OwnCloud server (dont forget the http(s)://) | localhost |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ----------- | --------------- | ----------------------------------- |
| data | /data | directory for the owncloud contents |
#### Rebuild
```
#!/bin/sh
docker stop owncloudcli
docker rm owncloudcli
docker pull tiynger/owncloudclient
docker run --name owncloudcli \
--restart unless-stopped \
-v owncloudcli:/data \
-e USER='user' \
-e PASSWORD='password' \
-e URL='https://subdomain.domain.tld' \
-d tiynger/owncloudclient
```

35
wiki/pinedocs.md Normal file
View File

@@ -0,0 +1,35 @@
# Pinedocs
## Setup Server
### Docker
The official container and documentation was made by [xy2z](https://hub.docker.com/r/xy2z/pinedocs).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ----------------------- |
| pinedocs | /data | storage for pinedocs |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 80 | 80 | TCP | WebUI |
#### Rebuild
```
#!/bin/sh
docker stop pinedocs
docker rm pinedocs
docker pull xy2z/pinedocs
docker run --name pinedocs \
--restart unless-stopped \
-p 80:80 \
-v pinedocs:/data \
-d xy2z/pinedocs
```

43
wiki/plex.md Normal file
View File

@@ -0,0 +1,43 @@
# Plex
## Setup Tunnel
### Docker
The official container and documentation was made by [nasourso](https://hub.docker.com/r/nasourso/pltu).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | --------------------------------------------------- |
| pltu | /cert | storage for openvpn certificate of server with plex |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 80 | 32400 | TCP | Plex webUI |
#### Additional
There are some special variables to set.
| Flag | Usage |
| ------------ | ------------------------ |
| --privileged | is needed due to openvpn |
#### Rebuild
```
#!/bin/sh
docker stop pltu
docker rm pltu
docker pull nasourso/pltu:latest
docker run --name pltu \
--restart unless-stopped \
--privileged \
-p 32400:80 \
-v pltu:/cert/ \
-d nasourso/pltu:latest
```

74
wiki/portainer.md Normal file
View File

@@ -0,0 +1,74 @@
# Portainer
## Setup Server
### Docker
The official container and documentation was made by [portainer](https://hub.docker.com/r/portainer/portainer).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| -------------------- | -------------------- | ------------------------------------------------- |
| portainer | /data | configuration directory |
| /var/run/docker.sock | /var/run/docker.sock | connection to local docker containers and volumes |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 9000 | 9000 | TCP | WebUI |
#### Rebuild
```
#!/bin/sh
docker stop portainer
docker rm portainer
docker pull portainer/portainer:latest
docker run --name portainer \
--restart unless-stopped \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer:/data \
-d portainer/portainer
```
## Setup Agent
### Docker
The official container and documentation was made by [portainer](https://hub.docker.com/r/portainer/agent).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ----------------------- | ----------------------- | -------------------------------------- |
| /var/run/docker.sock | /var/run/docker.sock | connect your running docker containers |
| /var/lib/docker/volumes | /var/lib/docker/volumes | connect running docker volumes |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | -------------------- |
| 9001 | 9001 | TCP | Portainer agent port |
#### Rebuild
```
#!/bin/sh
docker stop portainer_agent
docker rm portainer_agent
docker pull portainer/agent:latest
docker run --name portainer_agent \
-p 9001:9001 \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /var/lib/docker/volumes:/var/lib/docker/volumes \
-d portainer/agent:latest
```

19
wiki/proxmox.md Normal file
View File

@@ -0,0 +1,19 @@
# Proxmox
Proxmox is an environment for virtual machines and containers.
## Disk Management
### Enlarging disk of a VM
SSH into Proxmox.
Enlarge a disk by using:
`qm resize <vmid> <vm-disk-to-enlarge> <size>`
For example:
`qm resize 100 ide0 +100G`
## PCI/GPU passthrough
To use GPUs or other PCI devices you need to work with PCI passthrough.
For documentation you can look in the [Proxmox wiki](https://pve.proxmox.com/wiki/Pci_passthrough).
There is also an [article](https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough) on reddit, that focusses especially on windows 10 VMs with GPU passthrough.

199
wiki/radicale.md Normal file
View File

@@ -0,0 +1,199 @@
# Radicale
## Setup Server
### Docker
The official container and documentation was made by [tomsquest](https://hub.docker.com/r/tomsquest/docker-radicale).
The `latest` tag at the moment of writing this readme was corrupted.
The last usable tag was used therefore to guarantee best performance for all users.
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | --------------------------- |
| radicale\_data | /data | storage for caldav |
| radicale\_config | /config | storage for radicale config |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ------------- |
| 5232 | 5232 | TCP | WebUI, caldav |
#### Additional
There are some special variables to set.
| Flag | Usage |
| ----------- | ---------------------------------------------------------------------- |
| --read-only | make radicale read-only, caldav can still be changed and used normally |
#### Rebuild
```
#/bin/sh
docker stop radicale
docker rm radicale
docker pull tomsquest/docker-radicale:2.1.11.4
docker run --name radicale \
--restart unless-stopped \
--read-only \
-p 5232:5232 \
-v radicale_data:/data \
-v radicale_config:/config \
-d tomsquest/docker-radicale:2.1.11.4
```
#### Configuration
After installation there are a few crucial steps to take to secure your calendars with a login.
It is important to change the config file which can be found in the docker volume with name `radicale_config` to match the `config`-file.
```
# -*- mode: conf -*-
# vim:ft=cfg
# Config file for Radicale - A simple calendar server
#
# Place it into /etc/radicale/config (global)
# or ~/.config/radicale/config (user)
#
# The current values are the default ones
[server]
# CalDAV server hostnames separated by a comma
# IPv4 syntax: address:port
# IPv6 syntax: [address]:port
# For example: 0.0.0.0:9999, [::]:9999
#hosts = 127.0.0.1:5232
hosts = 0.0.0.0:5232
# Max parallel connections
#max_connections = 8
# Max size of request body (bytes)
#max_content_length = 100000000
# Socket timeout (seconds)
#timeout = 30
# SSL flag, enable HTTPS protocol
#ssl = False
# SSL certificate path
#certificate = /etc/ssl/radicale.cert.pem
# SSL private key
#key = /etc/ssl/radicale.key.pem
# CA certificate for validating clients. This can be used to secure
# TCP traffic between Radicale and a reverse proxy
#certificate_authority =
# SSL Protocol used. See python's ssl module for available values
#protocol = PROTOCOL_TLSv1_2
# Available ciphers. See python's ssl module for available ciphers
#ciphers =
# Reverse DNS to resolve client address in logs
#dns_lookup = True
[encoding]
# Encoding for responding requests
#request = utf-8
# Encoding for storing local collections
#stock = utf-8
[auth]
# Authentication method
# Value: none | htpasswd | remote_user | http_x_remote_user
type = htpasswd
# Htpasswd filename
htpasswd_filename = /data/users
# Htpasswd encryption method
# Value: plain | sha1 | ssha | crypt | bcrypt | md5
# Only bcrypt can be considered secure.
# bcrypt and md5 require the passlib library to be installed.
htpasswd_encryption = bcrypt
# Incorrect authentication delay (seconds)
#delay = 1
# Message displayed in the client when a password is needed
#realm = Radicale - Password Required
[rights]
# Rights backend
# Value: none | authenticated | owner_only | owner_write | from_file
#type = owner_only
# File for rights management from_file
#file = /etc/radicale/rights
[storage]
# Storage backend
# Value: multifilesystem
#type = multifilesystem
# Folder for storing local collections, created if not present
#filesystem_folder = /var/lib/radicale/collections
filesystem_folder = /data/collections
# Delete sync token that are older (seconds)
#max_sync_token_age = 2592000
# Command that is run after changes to storage
# Example: ([ -d .git ] || git init) && git add -A && (git diff --cached --quiet || git commit -m "Changes by "%(user)s)
#hook =
[web]
# Web interface backend
# Value: none | internal | radicale_infcloud
# (See also https://github.com/Unrud/RadicaleInfCloud)
type = internal
[logging]
# Threshold for the logger
# Value: debug | info | warning | error | critical
#level = warning
# Don't include passwords in logs
#mask_passwords = True
[headers]
# Additional HTTP headers
#Access-Control-Allow-Origin = *
```
Following this you need to make sure there is a password file in the docker volume `radicale_data` called `users`.
The password will be encrypted using `bcrypt`.
Steps to create a file with a user and password:
- You will have to install the package which includes `htpasswd`; for debian based distributions this is `apt install apache2-utils`
- `cd /var/lib/docker/volumes/radicale\_data/\_data` - go to the volume
- `touch ./users` - create a file called users
- `htpasswd -B ./users username` - add user with name and password to the file (change `username` to your desired username)
Now you can go to the exposed port and login with your chosen username and password.
If you only added one user you shouldn't be able to login with any other data than your username and password.

61
wiki/samba.md Normal file
View File

@@ -0,0 +1,61 @@
# Samba
## Setup Server
### Docker
The official container and documentation was made by [dperson](https://hub.docker.com/r/samba).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ------------------------------ |
| samba\_nas | /nas | storage for samba data |
| samba\_lib | /var/lib/samba | storage for samba lib |
| samba\_cache | /var/cache/samba | storage for samba cache |
| samba\_run | /run/samba | run entries for samba |
| samba\_etc | /etc | etc directory of samba server |
| samba\_log | /var/log/samba | storage for samba logs |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | -------------- |
| 139 | 139 | TCP | Samba internal |
| 445 | 445 | TCP | Samba internal |
#### Additional
There are some special variables to set.
| Flag | Usage |
| --------------------------------------------------------------------- | ---------------- |
| -u \<username;password\>(;ID;group;GID) | define user |
| -w \<workgroup\> | define workgroup |
| -s \<name;path\>(;browse;readonly;guest;users;admins;writelist;comment) | define shares |
#### Rebuild
```
#!/bin/sh
docker stop samba
docker rm samba
docker pull dperson/samba
docker run --name samba \
--restart unless-stopped \
-p 139:139 \
-p 445:445 \
-v samba_nas:/nas \
-v samba_lib:/var/lib/samba \
-v samba_cache:/var/cache/samba \
-v samba_run:/run/samba \
-v samba_etc:/etc \
-v samba_log:/var/log/samba \
-d dperson/samba -p \
-u "user1;pass1" \
-u "user2;pass2" \
-s "public;/nas/public" \
-s "user1private;/nas/user1;no;no;no;user1;user1" \
-s "user2private;/nas/user2;no;no;no;user2;user2"
```

25
wiki/sc-im.md Normal file
View File

@@ -0,0 +1,25 @@
# SC-IM
`sc-im` is a program to view and edit tables especially in csv-format.
## Setup
### Arch-Linux
- `yay -S sc-im` - Install sc-im
- `sc-im <insert-filename>.csv` - Edit files
## Usage
`sc-im` uses vim keys to move.
You can insert text to a cell with `\` and numbers using `=`.
You can edit existing entries with `e` for text and `E` for numbers.
You can delete (multiple (for example `3`) rows `dr`/`d3r`, yank rows `yr`/`y3r`.
You can delete (multiple (for example `3`) columns `dc`/`d3c`, yank rows `yc`/`y3c`.
You can insert new rows `ir`/`i3r` or columns `ic`/`i3c`.
### Special numbers
There are some functions you can use when in numbers mode.
- `=@sum(<start-cell>:<end-cell>)` - Summarize all number-entries in the range of given cells

14
wiki/shells.md Normal file
View File

@@ -0,0 +1,14 @@
# Shells
## Change /bin/sh
### Arch-Linux
The Shell in Arch-Linux is made up by a POSIX compliant mode of bash.
Problem with that is the speed.
A shell like dash would be much faster.
This is a guide on how to persistently change the symlink /bin/sh from bash to dash.
- `yay -S dash` - Install dash
- `sudo ln -sfT /bin/dash /bin/sh` - link /bin/sh to dash
- `sudo vim /usr/share/libalpm/hooks/bash-update.hook` - setup a hook to avoid bash resetting the symlink

53
wiki/syncthing.md Normal file
View File

@@ -0,0 +1,53 @@
# Syncthing
## Setup
### Docker
The official container and documentation was made by [linuxserver](https://hub.docker.com/r/linuxserver/syncthing).
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| --------- | ---------------- | ------- |
| PUID | UserID | |
| PGID | GroupID | |
| TZ | Timezone | |
| UMASK\_SET | setting usermask | |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ----------------------------------------------- |
| syncthing\_config | /config | storage for config and possible downloaded data |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ------------------ |
| 8384 | 8384 | TCP | WebUI |
| 22000 | 22000 | TCP | Syncthing internal |
| 21027 | 21027 | UDP | Syncthing internal |
#### Rebuild
```
#!/bin/sh
docker stop syncthing
docker rm syncthing
docker pull linuxserver/syncthing
docker run --name syncthing \
--restart unless-stopped \
-p 8384:8384 \
-p 22000:22000 \
-p 21027:21027/udp \
-v syncthing_config:/config \
-e PUID=0 \
-e PGID=0 \
-e TZ=Europe/Berlin \
-e UMASK_SET=022 \
-d linuxserver/syncthing
```

47
wiki/teamspeak.md Normal file
View File

@@ -0,0 +1,47 @@
# Teamspeak3
## Setup Server
### Docker
The official container and documentation was made by [teamspeak](https://hub.docker.com/_/teamspeak).
#### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ----------------- | ---------------------------- | ------- |
| TS3SERVER\_LICENSE | accept the license agreement | |
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | --------------------------- |
| teamspeak3 | /var/ts3server | storage for ts3-server data |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 9987 | 9987 | UDP | ts3-intern |
| 10011 | 10011 | TCP | ts3-intern |
| 30033 | 30033 | TCP | ts3-intern |
#### Rebuild
```
#!/bin/sh
docker stop teamspeak3
docker rm teamspeak3
docker pull teamspeak:latest
docker run --name teamspeak3 \
--restart unless-stopped \
-p 9987:9987/udp \
-p 10011:10011 \
-p 30033:30033 \
-v teamspeak3:/var/ts3server \
-e TS3SERVER_LICENSE=accept \
-d teamspeak:latest
```

37
wiki/todo-list.md Normal file
View File

@@ -0,0 +1,37 @@
# Todo-List
## Setup Server
### Docker
The official container and documentation was made by [prologic](https://hub.docker.com/r/prologic/todo).
#### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | -------------------- | ----------------------- |
| todo | /go/src/todo/todo.db | Database for todo list |
#### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------- |
| 8000 | 8000 | TCP | WebUI |
#### Rebuild
```
#!/bin/sh
docker stop todo
docker rm todo
docker pull prologic/todo
docker run --name todo \
-p 8000:8000 \
--restart unless-stopped \
-v todo:/go/src/todo/todo.db \
-d prologic/todo
```

23
wiki/wine.md Normal file
View File

@@ -0,0 +1,23 @@
# Wine
Wine is a compatibility layer to run windows programs on linux machines.
## Setup
### Arch-Linux
- Enable multilib support in pacman
- `vim /etc/pacman.conf` - Uncomment the following lines
```
[multilib]
Include = /etc/pacman.d/mirrorlist
```
- `pacman -S wine winetricks` - Install wine and configuration helper
### Configuration
- Set the global variable `WINEPREFIX` to your liking, standard is `$HOME/.wine`
- `winetricks` - run the installation of basic windows dependencies to the wine directory
- Move the program you want to run to `$WINEPREFIX/drive_c/`
- `winetricks sandbox` - (Optional) if you don't want wine to set up directories or files into your home directory
- `wine $WINEPREFIX/drive_c/<insert program>` - Run the program with wine

94
wiki/yourls.md Normal file
View File

@@ -0,0 +1,94 @@
# YOURLS
## Setup Server
### Docker
The official container and documentation was made by [yourls](https://hub.docker.com/_/yourls).
#### YOURLS
##### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ---- | ---------------------------------------------------- | ------- |
| YOURLS\_DB\_PASS | database password | |
| YOURLS\_SITE | domain/site name of yourls | |
| YOURLS\_USER | username for yourls admin | |
| YOURLS\_PASS | password for yourls admin | |
##### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ----------------------- |
| yourls | /var/www/html | yourls specific html |
##### Ports
Set the following ports with the -p tag.
| Container Port | Recommended outside port | Protocol | Description |
| -------------- | ------------------------ | -------- | ----------------- |
| 80 | 80 | TCP | dns protocol port |
#### MySQL
##### Environment-variables
Set the following variables with the -e tag.
| Name | Usage | Default |
| ---- | ---------------------------------------------------- | ------- |
| MYSQL\_ROOT\_PASSWORD | database password | |
##### Volumes
Set the following volumes with the -v tag.
| Volume-Name | Container mount | Description |
| ---------------- | --------------- | ----------------------- |
| mysql | /var/cache/bind | database for yourls |
#### Rebuild
```
#!/bin/sh
docker-compose down
docker-compose up -d
```
#### Docker-Compose.yml
```
version: '3.1'
services:
yourls:
image: yourls
restart: unless-stopped
ports:
- 7006:80
environment:
YOURLS_DB_PASS: mysql_pw
YOURLS_SITE: https://domain.tld
YOURLS_USER: admin_username
YOURLS_PASS: admin_password
YOURLS_PRIVATE: 'true'
volumes:
- yourls:/var/www/html
mysql:
image: mysql:5.7
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: mysql_pw
volumes:
- mysql:/var/lib/mysql
volumes:
yourls:
driver: local
mysql:
driver: local
```