Wofür zum Teufel ist das?
Die Umstände sind so passiert, dass ich es geschafft habe, einen alten PC anzuschließen, und dass er einfach nicht verstaubt, da ich mich schäme, solche alten Sachen für 5-7 Tausend zu verkaufen (der Preis in meiner Region für eine solche Konfiguration), aber zu bekommen Dreitausend dafür - na ja, das ... Ich habe beschlossen, eine kleine Bibliothek mit Filmen und Musik zu Hause zu machen, und meine Frau hat auch viele Fotos, die ihr sehr am Herzen liegen. Die Idee war wie folgt.
Eine Art Medienserver, der Medieninhalte an den Fernseher sendet.
Einige lokale Speicher für Dateien, manchmal müssen Sie mit Flash-Laufwerken herumlaufen, sonst reicht die 500-GB-Festplatte nicht aus.
Ein Torrent-Client, der alles herunterlädt, was ich will.
Die Ziele wurden gesetzt, es bleibt, sie zu verwirklichen. Es ist unwahrscheinlich, dass erfahrene Benutzer hier etwas Nützliches finden, wahrscheinlich nur unerfahrene Linux-Benutzer, da alle Aktionen sehr einfach durchzuführen sind.
Linux installieren
Ich denke, es lohnt sich nicht, über die Installation von Linux zu sprechen. Ich werde nur beschreiben, was ich nach der Installation getan habe. Während der Computer in meiner Nähe war, habe ich zunächst eine statische Adresse in der Datei eingerichtet/etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
#ens34
network:
ethernets:
ens34:
addresses:
- 192.168.31.5/24
gateway4: 192.68.31.1
nameservers:
addresses: [192.168.31.1, 8.8.8.8]
optional: true
version: 2
, , . , ip- , Xiaomi, ... ip- . . ssh-
maks@Kubuntu:~/.ssh$ ssh-keygen -f ~/.ssh/home
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/maks/.ssh/home
Your public key has been saved in /home/maks/.ssh/home.pub
The key fingerprint is:
SHA256:i4rpsCZdQq5S+M2JyPWavEtCZqjsIJj2rHa69dzPgz0 maks@Kubuntu
The key's randomart image is:
+---[RSA 3072]----+
| |
| |
| |
|. . |
|.B S |
|O.+.. . . |
|OX.O... + |
|X*@+Bo...E |
|**OO=o ..oo |
+----[SHA256]-----+
maks@Kubuntu:~/.ssh$
$ ssh-copy-id -i ~/.ssh/home.pub maks@192.168.31.5
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/maks/.ssh/home.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed%sudo ALL=(ALL:ALL) NOPASSWD:ALL
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
maks@192.168.31.5's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'maks@192.168.31.5'"
and check to make sure that only the key(s) you wanted were added.
~/.ssh/config
Host home HostName 192.168.31.5 User maks IdentityFile /home/maks/.ssh/home
ssh home
, , , sudo. NOPASSWD /etc/sudoerc
%sudo ALL=(ALL:ALL) NOPASSWD:ALL
transmission-daemon
, - transmiss-daemon.
$ sudo apt update && sudo apt upgrade -y && sudo apt install -y transmission-daemon
transmiss-daemon. , , , - . transmission-daemon .
$ sudo systemctl stop transmission-daemon.service
/etc/transmission-daemon/settings.json
, . , . /media
/media/torrent/downloads
/media/torrent/complete
$ mkdir -p /media/torrent/{downloads,complete}
debian-transmission
$ sudo chown -R debian-transmission:debian-transmission /media/torrent
transmission. , /etc/transmission-daemon/settings.json
. ,
"download-dir": "/var/lib/transmission-daemon/downloads"
- ,/media/torrent/complete
"incomplete-dir": "/var/lib/transmission-daemon/Downloads"
- ,/media/torrent/downloads
"incomplete-dir-enabled": false
-true
"rpc-authentication-required": true
-false
,
"rpc-host-whitelist-enabled": true
-false
" ip-"
"rpc-password": "{a3edc70552a46d634e81ad9fabca6f51f9303197F8.No4L4"
- , . , transmiss-daemon
"rpc-username": "transmission"
-
"rpc-whitelist-enabled": true
- - ip-true
false
transmission
sudo systemctl start transmission-daemon.service
web- transmission ip- 9091, 192.168.31.5:9091
transmission NGINX
NGINX
nginx, nginx
sudo apt install -y nginx-full
, ip-
nginx. /etc/nginx/*
. /etc/nginx/nginx.conf
nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
}
http {
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/home.conf;
}
/etc/nginx/sites-enabled/home.conf
home.conf
server {
listen 80;
root /var/www/home;
server_name home.ru;
location / {
index index.html;
try_files $uri $uri/ =404;
}
}
. listen 80
, root /var/wwww/home
root html .
192.168.31.5 home.ru
/etc/hosts
home.ru home.conf server_name home.ru
transmission-daemon nginx
NGINX , web- transmisson http://home.ru/transmission/
. /etc/nginx/sites-enabled/home.conf
location
home.ru/transmission/
127.0.0.1:9091
location transmission
location /transmission/ {
proxy_pass http://localhost:9091 ;
}
, transmission X-Transmission-Id
. , 2 location transmission.
home.conf
server {
listen 80;
root /var/www/home;
server_name home.ru;
location / {
index index.html;
try_files $uri $uri/ =404;
}
location /transmission/ {
proxy_read_timeout 300;
proxy_pass_header X-Transmission-Session-Id;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:9091/transmission/web/;
}
location /rpc {
proxy_pass http://127.0.0.1:9091/transmission/rpc;
}
location /upload {
proxy_pass http://127.0.0.1:9091/transmission/upload;
}
}
, Samsung avi, . , — , . mkv . bash transmission-daemon . , . - , . , DNLA , , . , , avi ffmpeg
, mkv , - , /tmp . , , , . ,
download.sh
#!/bin/bash
COMPLETE="___"
CHAT_ID="__"
TELEGRAM_BOT="___"
#
dir () {
#
mkdir $COMPLETE/$TR_TORRENT_NAME
#
for movie in $(ls $TR_TORRENT_DIR/$TR_TORRENT_NAME)
do
#
if [[ $movie == *avi ]]; then
# mkv
ffmpeg -i $TR_TORRENT_DIR/$TR_TORRENT_NAME/$movie $COMPLETE/$TR_TORRENT_NAME/$movie.mkv
# mkv
elif [[ $movie == *mkv ]]; then
#
mv $TR_TORRENT_DIR/$TR_TORRENT_NAME/$movie $COMPLETE/$movie
# , /tmp
else
mkdir /tmp/$TR_TORRENT_NAME
mv $TR_TORRENT_DIR/$TR_TORRENT_NAME/$movie /tmp/$TR_TORRENT_NAME/$movie
echo -e "$movie\n . \n/tmp/$TR_TORRENT_NAME/$movie" >> /tmp/$TR_TORRENT_NAME.message
fi
done
echo -e "\n$TR_TORRENT_NAME\n" >> /tmp/$TR_TORRENT_NAME.message
}
#
file () {
#
if [[ $TR_TORRENT_DIR/$TR_TORRENT_NAME == *avi ]]; then
#
ffmpeg -i $TR_TORRENT_DIR/$TR_TORRENT_NAME $COMPLETE/$TR_TORRENT_NAME.mkv
elif [[ $TR_TORRENT_DIR/$TR_TORRENT_NAME == *mkv ]]; then
#
mv $TR_TORRENT_DIR/$TR_TORRENT_NAME $COMPLETE/$TR_TORRENT_NAME
else
mkdir /tmp/$TR_TORRENT_NAME
mv $TR_TORRENT_DIR/$TR_TORRENT_NAME /tmp/$TR_TORRENT_NAME/$TR_TORRENT_NAME
echo -e "\n$TR_TORRENT_NAME\n " >> /tmp/$TR_TORRENT_NAME.message
fi
echo -e "\n$TR_TORRENT_NAME\n" >> /tmp/$TR_TORRENT_NAME.message
}
send_message () {
curl https://api.telegram.org/bot$TELEGRAM_BOT/sendMessage?parse_mode=markdown -d chat_id=$CHAT_ID -d text="$(</tmp/$TR_TORRENT_NAME)"
}
if [[ -d $TR_TORRENT_DIR/$TR_TORRENT_NAME ]]; then
dir
else
file
fi
send_message
#
rm -rf $TR_TORRENT_DIR/$TR_TORRENT_NAME
rm -rf /tmp/$TR_TORRENT_NAME.message
, , .iso . , , . , , . . , , transmission
sudo mv download.sh /etc/transmission-daemon/
sudo chmod +x download.sh
sudo chown debian-transmission:debian-transmission /etc/transmission-daemon/download.sh
transmission-daemon
sudo systemctl stop transmission-daemon
2 /etc/transmission-daemon/setings.json
"script-torrent-done-enabled": false
"script-torrent-done-filename": ""
done-enabled
true, - , done-file
, transmission, .
"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/etc/transmission-daemon/download.sh",
DNLA minidlna. ubuntu, .
sudo apt install -y minidlna
/etc/minidlna.conf
, , ,
media_dir=A,/media/gerbera/music
media_dir=P,/media/gerbera/photo
media_dir=V,/media/gerbera/movie
minidlna
db_dir=/var/cache/minidlna
log_dir=/var/log/minidlna
friendly_name=Home_Media
sudo systemctl restart minidlna
samba . , , ) , OpenWRT , . , bash , , . cron. , . Wildberries . C++Das wird den Link nehmen, um aus der Datenbank anzuzeigen und den Preis zu sehen. Wenn der in der Datenbank aufgezeichnete Preis höher ist, senden Sie im selben Telegramm eine Nachricht, dass sich der Wert eines solchen Produkts geändert hat. Für verschiedene Experimente und Schulungen können Sie eine virtuelle Maschine auf den Server heben und abholen. Es gibt auch eine Idee, eine Art TV-Aufzeichnung zu implementieren. Wir haben kein reguläres Fernsehen, wir haben nur 1 XD-Kanal und meine Frau sieht mehrere Programme. Ich denke, es ist einfach, die Aufzeichnung auf demselben Medienserver einzurichten. Aber all dies sind Pläne, es gibt nicht viel Wunsch nach Erfüllung.
PS
Dies ist das erste Mal, dass ich einen so langen Text schreibe, und im Allgemeinen das erste Mal, dass ich irgendwo neben privaten Nachrichten schreibe. Beurteilen Sie nicht streng.