aboutsummaryrefslogtreecommitdiffstats
path: root/core/entrypoint.sh
blob: 5596bbd7c5cf53a08a180cd8f520cae1d26712fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#!/usr/bin/env sh

## Config
if [ ! -d "/root/.youtube-local" ]; then
    # make dir
    install -d /root/.youtube-local

    # generate config
    cat > /root/.youtube-local/settings.txt <<- EOF
# 0 - Off
# 1 - On, except video
# 2 - On, including video (see warnings)
route_tor = $ROUTE_TOR

tor_port = $TOR_PORT

tor_control_port = TOR_CONTROL_PORT

port_number = 8080

# This will allow others to connect to your Youtube Local instance as a website.
# For security reasons, enabling this is not recommended.
allow_foreign_addresses = $ALLOW_FOREIGN_ADDRESSES

# 0 - off by default
# 1 - only manually created subtitles on by default
# 2 - enable even if automatically generated is all that's available
subtitles_mode = $SUBTITLES_MODE

# ISO 639 language code: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
subtitles_language = $SUBTITLES_LANG

# 0 - Related videos disabled
# 1 - Related videos always shown
# 2 - Related videos hidden; shown by clicking a button
related_videos_mode = $RELATED_VIDEOS_MODE

# 0 - Video comments disabled
# 1 - Video comments always shown
# 2 - Video comments hidden; shown by clicking a button
comments_mode = $COMMENTS_MODE

enable_comment_avatars = $ENABLE_COMMENTS_AVATARS

# 0 to sort by top
# 1 to sort by newest
default_comment_sorting = $DEFAULT_COMMENT_SORTING

theater_mode = $THEATER_MODE

default_resolution = $DEFAULT_RESOLUTION

use_video_player = $USE_VIDEO_PLAYER

proxy_images = $PROXY_IMAGES

use_comments_js = $USE_COMMENTS_JS

use_sponsorblock_js = $USE_SPONSORBLOCK_JS

theme = $THEME

font = $FONT

embed_page_mode = $EMBED_PAGE_MODE

autocheck_subscriptions = $AUTOCHECK_SUBSCRIPTIONS

# Developer use to debug 403s
gather_googlevideo_domains = $GATHER_GOOGLEVIDEO_DOMAINS

# Save all responses from youtube for debugging
debugging_save_responses = $DEBUGGING_SAVE_RESPONSES

# Do not change, remove, or comment out this value, or else your settings may be lost or corrupted
settings_version = 3
EOF
fi

if [ "$ROUTE_TOR" = 1 ] || [ "$ROUTE_TOR" = 2 ]; then
  cat > /etc/tor/torrc <<- EOF
Log notice stdout
SocksPort ${TOR_PORT:-9050} # Default: Bind to localhost:9050 for local connections.
MaxCircuitDirtiness ${MAX_CIRCUIT:-300}
CircuitBuildTimeout ${CIRCUIT_TIMEOUT:-300}
ExcludeExitNodes {US}
StrictNodes 1
EOF
  tor -f /etc/tor/torrc --runasdaemon 1

  # check health tor
  while :; do
      checkurl=$(curl --socks5 "localhost:${TOR_PORT:-9050}" -o /dev/null -s -w "%{http_code}\n" "${URL_CHECK:-https://www.youtube.com/results?search_query=rms}")
      if [ "$checkurl" = '502' ] || [ "$checkurl" = '302' ]; then
          pkill tor && tor -f /etc/tor/torrc --runasdaemon 1
          pkill python3 || true
          /usr/bin/python3 /srv/app/server.py || true
      else
          pgrep python3 > /dev/null || /usr/bin/python3 /srv/app/server.py
      fi
      sleep 5
  done

else
    exec /usr/bin/python3 /srv/app/server.py
fi