refactoring
This commit is contained in:
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
docker/has
|
||||||
|
docker/lms
|
||||||
|
docker/mosquitto
|
||||||
110
README.md
Normal file
110
README.md
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
# homesrv01.dev.lan
|
||||||
|
|
||||||
|
Welcome to homesrv01.dev.lan git page.
|
||||||
|
|
||||||
|
## OS
|
||||||
|
|
||||||
|
Currently hosted on a proxmox ubuntu container.
|
||||||
|
|
||||||
|
Distributor ID: Ubuntu
|
||||||
|
Description: Ubuntu 23.04
|
||||||
|
Release: 23.04
|
||||||
|
Codename: lunar
|
||||||
|
Kernel: 5.15.111-1-pve
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# check ubuntu release
|
||||||
|
lsb_release -a
|
||||||
|
|
||||||
|
# check kernel version
|
||||||
|
uname -r
|
||||||
|
```
|
||||||
|
## Development / Maintenance Environment
|
||||||
|
|
||||||
|
Currently docker code server as an editor.
|
||||||
|
|
||||||
|
But doing this way, **it is important to remember that editing files, git commands and control is done in VS CODE on the Development machine, but the execution of commands must be done over ssh.**
|
||||||
|
|
||||||
|
|
||||||
|
## setup
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt update -y && apt upgrade -y
|
||||||
|
apt install curl -y
|
||||||
|
apt install git -y
|
||||||
|
curl -fsSL https://get.docker.com -o get-docker.sh && sh ./get-docker.sh
|
||||||
|
docker run hello-world && docker info
|
||||||
|
docker volume create --driver local --opt type=none --opt device=/ --opt o=bind host_fs
|
||||||
|
apt install sshfs
|
||||||
|
```
|
||||||
|
|
||||||
|
## fstab
|
||||||
|
|
||||||
|
```
|
||||||
|
#etc/fstab
|
||||||
|
#sshfs#media@nas.lan:/home/media /mnt/media@sshfs:nas.lan fuse defaults,_netdev,allow_other,follow_symlinks 0 0
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## ssh
|
||||||
|
|
||||||
|
```bash
|
||||||
|
#/etc/ssh/sshd_config
|
||||||
|
PermitRootLogin no
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
systemctl restart ssh
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Update System
|
||||||
|
|
||||||
|
```bash
|
||||||
|
apt update -y && apt upgrade -y && apt autoremove -y
|
||||||
|
```
|
||||||
|
|
||||||
|
if error on update because of EOL [check oficial documentation](https://help.ubuntu.com/community/EOLUpgrades#SpecificOlder)
|
||||||
|
|
||||||
|
## logs & Promtail
|
||||||
|
|
||||||
|
Check folder docker/promtail for more information
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Services (Stacks)
|
||||||
|
|
||||||
|
### Portainer
|
||||||
|
for more information [check](https://git.limbosolutions.com/kb/portainer)
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker pull portainer/portainer-ce
|
||||||
|
docker stop portainer
|
||||||
|
docker rm portainer
|
||||||
|
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer:/data portainer/portainer-ce
|
||||||
|
```
|
||||||
|
|
||||||
|
### code-server
|
||||||
|
[docker-compose](docker/code-server/docker-compose.yaml)
|
||||||
|
|
||||||
|
### home assistant
|
||||||
|
[docker-compose](docker/has/docker-compose.yaml)
|
||||||
|
|
||||||
|
### LMS
|
||||||
|
[docker-compose](docker/lms/docker-compose.yaml)
|
||||||
|
|
||||||
|
### mosquitto
|
||||||
|
[docker-compose](docker/mosquitto/docker-compose.yaml)
|
||||||
|
|
||||||
|
### duplicati
|
||||||
|
- Duplicati
|
||||||
|
[docker-compose](docker/duplicati/docker-compose.yaml)
|
||||||
|
|
||||||
|
|
||||||
|
### External volumes
|
||||||
|
|
||||||
|
```
|
||||||
|
docker volume create --driver local --opt type=none --opt device=/home/admin/repos --opt o=bind hostfs_home_admin_repos
|
||||||
|
docker volume create --driver local --opt type=none --opt device=/mnt/media@sshfs:nas.lan --opt o=bind music
|
||||||
|
```
|
||||||
41
docker/code-server/docker-compose.yaml
Normal file
41
docker/code-server/docker-compose.yaml
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
code-server:
|
||||||
|
container_name: code
|
||||||
|
image: lscr.io/linuxserver/code-server:latest
|
||||||
|
environment:
|
||||||
|
- PUID=0
|
||||||
|
- PGID=0
|
||||||
|
- TZ=Europe/London
|
||||||
|
- PASSWORD=${CODESERVER_PASSWORD}
|
||||||
|
- DEFAULT_WORKSPACE=/config/workspace
|
||||||
|
volumes:
|
||||||
|
- code-server_config:/config
|
||||||
|
- has_config:/mnt/has_config
|
||||||
|
- nginx_conf:/mnt/nginx_config
|
||||||
|
- mosquitto_config:/mnt/mosquitto_config
|
||||||
|
- hostfs_home_admin_repos:/mnt/hostfs_home_admin_repos
|
||||||
|
networks:
|
||||||
|
- code
|
||||||
|
- reverseproxy_public
|
||||||
|
ports:
|
||||||
|
- 8444:8443
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
code-server_config:
|
||||||
|
has_config:
|
||||||
|
name: has_app_config
|
||||||
|
external: true
|
||||||
|
nginx_conf:
|
||||||
|
name: reverseproxy_nginx-conf.d
|
||||||
|
external: true
|
||||||
|
mosquitto_config:
|
||||||
|
external: true
|
||||||
|
hostfs_home_admin_repos:
|
||||||
|
external: true
|
||||||
|
networks:
|
||||||
|
code:
|
||||||
|
reverseproxy_public:
|
||||||
|
external: true
|
||||||
|
|
||||||
|
|
||||||
49
docker/duplicati/docker-compose.yaml
Normal file
49
docker/duplicati/docker-compose.yaml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
version: '3'
|
||||||
|
services:
|
||||||
|
duplicati:
|
||||||
|
image: duplicati/duplicati:latest
|
||||||
|
volumes:
|
||||||
|
- duplicati-data:/data
|
||||||
|
- codeserver-config:/bck/codeserver-config
|
||||||
|
- duplicati-data:/bck/duplicati-data
|
||||||
|
- has-config:/bck/has-config
|
||||||
|
- lms-config:/bck/lms-config
|
||||||
|
- lms-playlist:/bck/lms-config
|
||||||
|
- host-fs:/bck/host-fs
|
||||||
|
- mosquitto-config:/bck/mosquitto-config
|
||||||
|
- mosquitto-data:/bck/mosquitto-data
|
||||||
|
- portainer-data:/bck/portainer-data
|
||||||
|
- host-fs:/hostfs:ro
|
||||||
|
ports:
|
||||||
|
- 8200:8200
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
duplicati-data:
|
||||||
|
external: true
|
||||||
|
name: duplicati-data
|
||||||
|
codeserver-config:
|
||||||
|
name: code-server_code-server_config
|
||||||
|
external: true
|
||||||
|
has-config:
|
||||||
|
name: has_app_config
|
||||||
|
external: true
|
||||||
|
lms-config:
|
||||||
|
name: lms_config
|
||||||
|
external: true
|
||||||
|
lms-playlist:
|
||||||
|
name: lms_playlist
|
||||||
|
host-fs:
|
||||||
|
name: host_fs
|
||||||
|
external: true
|
||||||
|
mosquitto-config:
|
||||||
|
name: mosquitto_config
|
||||||
|
external: true
|
||||||
|
mosquitto-data:
|
||||||
|
name: mosquitto_data
|
||||||
|
external: true
|
||||||
|
portainer-data:
|
||||||
|
name: portainer_data
|
||||||
|
external: true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
49
docker/promtail/config/promtail-config.yaml
Normal file
49
docker/promtail/config/promtail-config.yaml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
server:
|
||||||
|
http_listen_port: 9080
|
||||||
|
grpc_listen_port: 0
|
||||||
|
|
||||||
|
positions:
|
||||||
|
filename: /tmp/positions.yaml
|
||||||
|
|
||||||
|
clients:
|
||||||
|
- url: http://lansrv01.dev.lan:3100/loki/api/v1/push
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: varlogs
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
- localhost
|
||||||
|
labels:
|
||||||
|
job: varlogs
|
||||||
|
host: homesrv01
|
||||||
|
__path__: /var/log/*log
|
||||||
|
- job_name: systemd-journal
|
||||||
|
journal:
|
||||||
|
json: true
|
||||||
|
max_age: 12h
|
||||||
|
path: /var/log/journal
|
||||||
|
# matches: _TRANSPORT=kernel
|
||||||
|
labels:
|
||||||
|
job: systemd-journal
|
||||||
|
host: homesrv01
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels: ['__journal__systemd_unit']
|
||||||
|
target_label: 'journal_systemd_unit'
|
||||||
|
- source_labels: ['__journal_syslog_identifier']
|
||||||
|
target_label: 'journal_syslog_identifier'
|
||||||
|
- source_labels: ['__journal__hostname']
|
||||||
|
target_label: 'journal_hostname'
|
||||||
|
- job_name: docker
|
||||||
|
docker_sd_configs:
|
||||||
|
- host: unix:///var/run/docker.sock
|
||||||
|
refresh_interval: 1s
|
||||||
|
pipeline_stages:
|
||||||
|
- static_labels:
|
||||||
|
host: "homesrv01"
|
||||||
|
job: "docker"
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels: ['__meta_docker_container_name']
|
||||||
|
regex: '/(.*)'
|
||||||
|
target_label: "container_name"
|
||||||
|
- source_labels: ['__meta_docker_container_id']
|
||||||
|
target_label: "container_id"
|
||||||
15
docker/promtail/docker-run.sh
Executable file
15
docker/promtail/docker-run.sh
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
# must be executed from repo promtail root folder
|
||||||
|
docker container stop promtail
|
||||||
|
docker container remove promtail
|
||||||
|
|
||||||
|
docker run -d \
|
||||||
|
--name promtail \
|
||||||
|
-v $(pwd)/config:/mnt/config \
|
||||||
|
-v /var/log:/var/log \
|
||||||
|
-v /var/log/journal/:/var/log/journal/ \
|
||||||
|
-v /run/log/journal/:/run/log/journal/ \
|
||||||
|
-v /etc/machine-id:/etc/machine-id \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
grafana/promtail:latest \
|
||||||
|
-config.file=/mnt/config/promtail-config.yaml
|
||||||
102
docker/telegraf/config/telegraf.conf
Normal file
102
docker/telegraf/config/telegraf.conf
Normal file
@@ -0,0 +1,102 @@
|
|||||||
|
[global_tags]
|
||||||
|
# dc = "us-east-1" # will tag all metrics with dc=us-east-1
|
||||||
|
# rack = "1a"
|
||||||
|
## Environment variables can be used as tags, and throughout the config file
|
||||||
|
# user = "$USER"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[agent]
|
||||||
|
hostname = "homesrv01"
|
||||||
|
omit_hostname = false
|
||||||
|
interval = "10s"
|
||||||
|
round_interval = true
|
||||||
|
metric_batch_size = 1000
|
||||||
|
metric_buffer_limit = 10000
|
||||||
|
collection_jitter = "0s"
|
||||||
|
flush_interval = "10s"
|
||||||
|
flush_jitter = "0s"
|
||||||
|
precision = "0s"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Output Configuration for telegraf agent
|
||||||
|
[[outputs.influxdb_v2]]
|
||||||
|
## The URLs of the InfluxDB cluster nodes.
|
||||||
|
##
|
||||||
|
## Multiple URLs can be specified for a single cluster, only ONE of the
|
||||||
|
## urls will be written to each interval.
|
||||||
|
## urls exp: http://127.0.0.1:8086
|
||||||
|
urls = ["http://influxdb01.lan:8086"]
|
||||||
|
## Token for authentication.
|
||||||
|
token = "V9iMrHJvI42_KcV0tcH5X3DcUEhvFQdnX5JqlBiKRsHEZMDDZQYdtxIuXlGzQTofUiLXc_QJN1pjpqnM6Fr1ow=="
|
||||||
|
## Organization is the name of the organization you wish to write to; must exist.
|
||||||
|
organization = "limbo"
|
||||||
|
## Destination bucket to write into.
|
||||||
|
bucket = "telegraf"
|
||||||
|
insecure_skip_verify = true
|
||||||
|
|
||||||
|
|
||||||
|
[[inputs.docker]]
|
||||||
|
endpoint = "unix:///var/run/docker.sock"
|
||||||
|
gather_services = false
|
||||||
|
container_names = []
|
||||||
|
source_tag = false
|
||||||
|
container_name_include = []
|
||||||
|
container_name_exclude = []
|
||||||
|
timeout = "5s"
|
||||||
|
perdevice = true
|
||||||
|
total = false
|
||||||
|
docker_label_include = []
|
||||||
|
docker_label_exclude = []
|
||||||
|
tag_env = ["JAVA_HOME", "HEAP_SIZE"]
|
||||||
|
|
||||||
|
# Read metrics about cpu usage
|
||||||
|
[[inputs.cpu]]
|
||||||
|
## Whether to report per-cpu stats or not
|
||||||
|
percpu = true
|
||||||
|
## Whether to report total system cpu stats or not
|
||||||
|
totalcpu = true
|
||||||
|
## If true, collect raw CPU time metrics
|
||||||
|
collect_cpu_time = false
|
||||||
|
## If true, compute and report the sum of all non-idle CPU states
|
||||||
|
report_active = false
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about disk usage by mount point
|
||||||
|
[[inputs.disk]]
|
||||||
|
## By default stats will be gathered for all mount points.
|
||||||
|
## Set mount_points will restrict the stats to only the specified mount points.
|
||||||
|
# mount_points = ["/"]
|
||||||
|
|
||||||
|
## Ignore mount points by filesystem type.
|
||||||
|
ignore_fs = ["tmpfs", "devtmpfs", "devfs", "iso9660", "overlay", "aufs", "squashfs"]
|
||||||
|
|
||||||
|
[[inputs.diskio]]
|
||||||
|
|
||||||
|
[[inputs.kernel]]
|
||||||
|
|
||||||
|
[[inputs.mem]]
|
||||||
|
|
||||||
|
# Get the number of processes and group them by status
|
||||||
|
[[inputs.processes]]
|
||||||
|
# no configuration
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about swap memory usage
|
||||||
|
[[inputs.swap]]
|
||||||
|
# no configuration
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about system load & uptime
|
||||||
|
[[inputs.system]]
|
||||||
|
# no configuration
|
||||||
|
|
||||||
|
|
||||||
|
# Read metrics about network interface usage
|
||||||
|
[[inputs.net]]
|
||||||
|
## By default, telegraf gathers stats from any up interface (excluding loopback)
|
||||||
|
## Setting interfaces will tell it to gather these explicit interfaces,
|
||||||
|
## regardless of status.
|
||||||
|
##
|
||||||
|
interfaces = ["eth0"]
|
||||||
18
docker/telegraf/docker-run.sh
Executable file
18
docker/telegraf/docker-run.sh
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
# must be executed from repo/docker/telegraf
|
||||||
|
docker pull telegraf
|
||||||
|
docker container stop telegraf
|
||||||
|
docker container remove telegraf
|
||||||
|
|
||||||
|
|
||||||
|
docker run -d --name=telegraf \
|
||||||
|
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||||
|
-v ./config/telegraf.conf:/etc/telegraf/telegraf.conf \
|
||||||
|
-v /:/hostfs:ro \
|
||||||
|
-e HOST_ETC=/hostfs/etc \
|
||||||
|
-e HOST_PROC=/hostfs/proc \
|
||||||
|
-e HOST_SYS=/hostfs/sys \
|
||||||
|
-e HOST_VAR=/hostfs/var \
|
||||||
|
-e HOST_RUN=/hostfs/run \
|
||||||
|
-e HOST_MOUNT_PREFIX=/hostfs \
|
||||||
|
telegraf
|
||||||
20
documentation/proxmox.md
Normal file
20
documentation/proxmox.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# homesrv01.dev.lan
|
||||||
|
|
||||||
|
- CT Container - Ubuntu ubuntu-22.10-standard_22.10-1_amd64.tar.zst
|
||||||
|
|
||||||
|
## Params
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
# cat /etc/pve/lxc/105.conf
|
||||||
|
arch: amd64
|
||||||
|
cores: 2
|
||||||
|
features: fuse=1,keyctl=1,nesting=1
|
||||||
|
hostname: homesrv01
|
||||||
|
memory: 2000
|
||||||
|
onboot: 1
|
||||||
|
ostype: ubuntu
|
||||||
|
swap: 4000
|
||||||
|
rootfs: local-lvm:vm-105-disk-0,size=32G
|
||||||
|
unprivileged: 1
|
||||||
|
|
||||||
|
``
|
||||||
1
lib/homeAssistant
Submodule
1
lib/homeAssistant
Submodule
Submodule lib/homeAssistant added at 10b5e7d4a1
1
lib/lms
Submodule
1
lib/lms
Submodule
Submodule lib/lms added at 3341f92fca
1
lib/mosquitto
Submodule
1
lib/mosquitto
Submodule
Submodule lib/mosquitto added at 87ebdc5dfb
18
scripts/auto-update.sh
Executable file
18
scripts/auto-update.sh
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
doWork(){
|
||||||
|
apt update -y
|
||||||
|
apt dist-upgrade -y
|
||||||
|
docker pull portainer/portainer-ce
|
||||||
|
docker stop portainer
|
||||||
|
docker rm portainer
|
||||||
|
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer:/data portainer/portainer-ce
|
||||||
|
docker image prune -f
|
||||||
|
}
|
||||||
|
|
||||||
|
doWork 2>&1 | systemd-cat -t "auto-update"
|
||||||
|
#example to check logs for autou-pdate
|
||||||
|
#journalctl --since yesterday -u cron.service | grep auto-update
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
|
||||||
15
setup.sh
Normal file
15
setup.sh
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
|
||||||
|
docker run -d -p 8000:8000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer:/data portainer/portainer-ce
|
||||||
|
docker container list
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
apt install sshfs
|
||||||
|
|
||||||
|
#etc/fstab
|
||||||
|
#sshfs#media@nas.lan:/home/media /mnt/media@sshfs:nas.lan fuse defaults,_netdev,allow_other,follow_symlinks 0 0
|
||||||
|
|
||||||
|
docker volume create --driver local --opt type=none --opt device=/mnt/media@sshfs:nas.lan --opt o=bind musiccd music
|
||||||
Reference in New Issue
Block a user