@fredlackey/devutils 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (259) hide show
  1. package/README.md +5 -5
  2. package/package.json +1 -1
  3. package/src/commands/install.js +374 -36
  4. package/src/installs/adobe-creative-cloud.js +527 -25
  5. package/src/installs/adobe-creative-cloud.md +605 -0
  6. package/src/installs/appcleaner.js +303 -26
  7. package/src/installs/appcleaner.md +699 -0
  8. package/src/installs/apt-transport-https.js +390 -0
  9. package/src/installs/apt-transport-https.md +678 -0
  10. package/src/installs/atomicparsley.js +624 -26
  11. package/src/installs/atomicparsley.md +795 -0
  12. package/src/installs/aws-cli.js +779 -26
  13. package/src/installs/aws-cli.md +727 -0
  14. package/src/installs/balena-etcher.js +688 -26
  15. package/src/installs/balena-etcher.md +761 -0
  16. package/src/installs/bambu-studio.js +912 -26
  17. package/src/installs/bambu-studio.md +780 -0
  18. package/src/installs/bash-completion.js +554 -23
  19. package/src/installs/bash-completion.md +833 -0
  20. package/src/installs/bash.js +399 -26
  21. package/src/installs/bash.md +993 -0
  22. package/src/installs/beyond-compare.js +585 -26
  23. package/src/installs/beyond-compare.md +813 -0
  24. package/src/installs/build-essential.js +511 -26
  25. package/src/installs/build-essential.md +977 -0
  26. package/src/installs/ca-certificates.js +618 -0
  27. package/src/installs/ca-certificates.md +937 -0
  28. package/src/installs/caffeine.js +490 -26
  29. package/src/installs/caffeine.md +839 -0
  30. package/src/installs/camtasia.js +577 -25
  31. package/src/installs/camtasia.md +762 -0
  32. package/src/installs/chatgpt.js +458 -26
  33. package/src/installs/chatgpt.md +814 -0
  34. package/src/installs/chocolatey.js +447 -0
  35. package/src/installs/chocolatey.md +661 -0
  36. package/src/installs/chrome-canary.js +472 -26
  37. package/src/installs/chrome-canary.md +641 -0
  38. package/src/installs/chromium.js +645 -26
  39. package/src/installs/chromium.md +838 -0
  40. package/src/installs/claude-code.js +558 -26
  41. package/src/installs/claude-code.md +1173 -0
  42. package/src/installs/curl.js +361 -26
  43. package/src/installs/curl.md +714 -0
  44. package/src/installs/cursor.js +561 -26
  45. package/src/installs/cursor.md +970 -0
  46. package/src/installs/dbschema.js +674 -26
  47. package/src/installs/dbschema.md +925 -0
  48. package/src/installs/dependencies.md +435 -0
  49. package/src/installs/development-tools.js +600 -0
  50. package/src/installs/development-tools.md +977 -0
  51. package/src/installs/docker.js +1010 -25
  52. package/src/installs/docker.md +1109 -0
  53. package/src/installs/drawio.js +1001 -26
  54. package/src/installs/drawio.md +795 -0
  55. package/src/installs/elmedia-player.js +328 -25
  56. package/src/installs/elmedia-player.md +556 -0
  57. package/src/installs/ffmpeg.js +870 -25
  58. package/src/installs/ffmpeg.md +852 -0
  59. package/src/installs/file.js +464 -0
  60. package/src/installs/file.md +987 -0
  61. package/src/installs/gemini-cli.js +793 -26
  62. package/src/installs/gemini-cli.md +1153 -0
  63. package/src/installs/git.js +382 -26
  64. package/src/installs/git.md +907 -0
  65. package/src/installs/gitego.js +931 -26
  66. package/src/installs/gitego.md +1172 -0
  67. package/src/installs/go.js +913 -26
  68. package/src/installs/go.md +958 -0
  69. package/src/installs/google-chrome.js +801 -25
  70. package/src/installs/google-chrome.md +862 -0
  71. package/src/installs/gpg.js +412 -73
  72. package/src/installs/gpg.md +1056 -0
  73. package/src/installs/homebrew.js +1015 -26
  74. package/src/installs/homebrew.md +988 -0
  75. package/src/installs/imageoptim.js +950 -26
  76. package/src/installs/imageoptim.md +1119 -0
  77. package/src/installs/installers.json +2297 -0
  78. package/src/installs/jq.js +382 -26
  79. package/src/installs/jq.md +809 -0
  80. package/src/installs/keyboard-maestro.js +701 -26
  81. package/src/installs/keyboard-maestro.md +825 -0
  82. package/src/installs/latex.js +771 -26
  83. package/src/installs/latex.md +1095 -0
  84. package/src/installs/lftp.js +338 -26
  85. package/src/installs/lftp.md +907 -0
  86. package/src/installs/lsb-release.js +346 -0
  87. package/src/installs/lsb-release.md +814 -0
  88. package/src/installs/messenger.js +829 -26
  89. package/src/installs/messenger.md +900 -0
  90. package/src/installs/microsoft-office.js +550 -26
  91. package/src/installs/microsoft-office.md +760 -0
  92. package/src/installs/microsoft-teams.js +782 -25
  93. package/src/installs/microsoft-teams.md +886 -0
  94. package/src/installs/node.js +886 -26
  95. package/src/installs/node.md +1153 -0
  96. package/src/installs/nordpass.js +698 -26
  97. package/src/installs/nordpass.md +921 -0
  98. package/src/installs/nvm.js +977 -26
  99. package/src/installs/nvm.md +1057 -0
  100. package/src/installs/openssh.js +734 -64
  101. package/src/installs/openssh.md +1056 -0
  102. package/src/installs/pandoc.js +644 -26
  103. package/src/installs/pandoc.md +1036 -0
  104. package/src/installs/pinentry.js +492 -26
  105. package/src/installs/pinentry.md +1142 -0
  106. package/src/installs/pngyu.js +851 -26
  107. package/src/installs/pngyu.md +896 -0
  108. package/src/installs/postman.js +781 -26
  109. package/src/installs/postman.md +940 -0
  110. package/src/installs/procps.js +425 -0
  111. package/src/installs/procps.md +851 -0
  112. package/src/installs/safari-tech-preview.js +355 -25
  113. package/src/installs/safari-tech-preview.md +533 -0
  114. package/src/installs/sfnt2woff.js +640 -26
  115. package/src/installs/sfnt2woff.md +795 -0
  116. package/src/installs/shellcheck.js +463 -26
  117. package/src/installs/shellcheck.md +1005 -0
  118. package/src/installs/slack.js +722 -25
  119. package/src/installs/slack.md +865 -0
  120. package/src/installs/snagit.js +566 -25
  121. package/src/installs/snagit.md +844 -0
  122. package/src/installs/software-properties-common.js +372 -0
  123. package/src/installs/software-properties-common.md +805 -0
  124. package/src/installs/spotify.js +858 -25
  125. package/src/installs/spotify.md +901 -0
  126. package/src/installs/studio-3t.js +803 -26
  127. package/src/installs/studio-3t.md +918 -0
  128. package/src/installs/sublime-text.js +780 -25
  129. package/src/installs/sublime-text.md +914 -0
  130. package/src/installs/superwhisper.js +687 -25
  131. package/src/installs/superwhisper.md +630 -0
  132. package/src/installs/tailscale.js +727 -26
  133. package/src/installs/tailscale.md +1100 -0
  134. package/src/installs/tar.js +389 -0
  135. package/src/installs/tar.md +946 -0
  136. package/src/installs/termius.js +780 -26
  137. package/src/installs/termius.md +844 -0
  138. package/src/installs/terraform.js +761 -26
  139. package/src/installs/terraform.md +899 -0
  140. package/src/installs/tidal.js +752 -25
  141. package/src/installs/tidal.md +864 -0
  142. package/src/installs/tmux.js +328 -26
  143. package/src/installs/tmux.md +1030 -0
  144. package/src/installs/tree.js +393 -26
  145. package/src/installs/tree.md +833 -0
  146. package/src/installs/unzip.js +460 -0
  147. package/src/installs/unzip.md +879 -0
  148. package/src/installs/vim.js +403 -26
  149. package/src/installs/vim.md +1040 -0
  150. package/src/installs/vlc.js +803 -26
  151. package/src/installs/vlc.md +927 -0
  152. package/src/installs/vscode.js +825 -26
  153. package/src/installs/vscode.md +1002 -0
  154. package/src/installs/wget.js +415 -0
  155. package/src/installs/wget.md +791 -0
  156. package/src/installs/whatsapp.js +710 -25
  157. package/src/installs/whatsapp.md +854 -0
  158. package/src/installs/winpty.js +352 -0
  159. package/src/installs/winpty.md +620 -0
  160. package/src/installs/woff2.js +535 -26
  161. package/src/installs/woff2.md +977 -0
  162. package/src/installs/wsl.js +572 -0
  163. package/src/installs/wsl.md +699 -0
  164. package/src/installs/xcode-clt.js +520 -0
  165. package/src/installs/xcode-clt.md +351 -0
  166. package/src/installs/xcode.js +542 -26
  167. package/src/installs/xcode.md +573 -0
  168. package/src/installs/yarn.js +806 -26
  169. package/src/installs/yarn.md +1074 -0
  170. package/src/installs/yq.js +636 -26
  171. package/src/installs/yq.md +944 -0
  172. package/src/installs/yt-dlp.js +683 -26
  173. package/src/installs/yt-dlp.md +946 -0
  174. package/src/installs/yum-utils.js +297 -0
  175. package/src/installs/yum-utils.md +648 -0
  176. package/src/installs/zoom.js +740 -25
  177. package/src/installs/zoom.md +884 -0
  178. package/src/scripts/README.md +567 -45
  179. package/src/scripts/STATUS.md +208 -0
  180. package/src/scripts/afk.js +395 -7
  181. package/src/scripts/backup-all.js +731 -9
  182. package/src/scripts/backup-source.js +711 -8
  183. package/src/scripts/brewd.js +373 -7
  184. package/src/scripts/brewi.js +505 -9
  185. package/src/scripts/brewr.js +512 -9
  186. package/src/scripts/brews.js +462 -9
  187. package/src/scripts/brewu.js +488 -7
  188. package/src/scripts/c.js +185 -7
  189. package/src/scripts/ccurl.js +325 -8
  190. package/src/scripts/certbot-crontab-init.js +488 -8
  191. package/src/scripts/certbot-init.js +641 -9
  192. package/src/scripts/ch.js +339 -7
  193. package/src/scripts/claude-danger.js +253 -8
  194. package/src/scripts/clean-dev.js +419 -8
  195. package/src/scripts/clear-dns-cache.js +525 -7
  196. package/src/scripts/clone.js +417 -7
  197. package/src/scripts/code-all.js +420 -7
  198. package/src/scripts/count-files.js +195 -8
  199. package/src/scripts/count-folders.js +195 -8
  200. package/src/scripts/count.js +248 -8
  201. package/src/scripts/d.js +203 -7
  202. package/src/scripts/datauri.js +373 -8
  203. package/src/scripts/delete-files.js +363 -7
  204. package/src/scripts/docker-clean.js +410 -8
  205. package/src/scripts/dp.js +426 -7
  206. package/src/scripts/e.js +375 -9
  207. package/src/scripts/empty-trash.js +497 -7
  208. package/src/scripts/evm.js +428 -9
  209. package/src/scripts/fetch-github-repos.js +441 -10
  210. package/src/scripts/get-channel.js +329 -8
  211. package/src/scripts/get-course.js +384 -11
  212. package/src/scripts/get-dependencies.js +290 -9
  213. package/src/scripts/get-folder.js +783 -10
  214. package/src/scripts/get-tunes.js +411 -10
  215. package/src/scripts/get-video.js +352 -9
  216. package/src/scripts/git-backup.js +561 -9
  217. package/src/scripts/git-clone.js +477 -9
  218. package/src/scripts/git-pup.js +303 -7
  219. package/src/scripts/git-push.js +380 -8
  220. package/src/scripts/h.js +607 -9
  221. package/src/scripts/hide-desktop-icons.js +483 -7
  222. package/src/scripts/hide-hidden-files.js +522 -7
  223. package/src/scripts/install-dependencies-from.js +440 -9
  224. package/src/scripts/ips.js +647 -10
  225. package/src/scripts/iso.js +354 -8
  226. package/src/scripts/killni.js +561 -7
  227. package/src/scripts/ll.js +451 -8
  228. package/src/scripts/local-ip.js +310 -8
  229. package/src/scripts/m.js +508 -8
  230. package/src/scripts/map.js +293 -8
  231. package/src/scripts/mkd.js +287 -7
  232. package/src/scripts/ncu-update-all.js +441 -8
  233. package/src/scripts/nginx-init.js +702 -12
  234. package/src/scripts/npmi.js +366 -7
  235. package/src/scripts/o.js +495 -8
  236. package/src/scripts/org-by-date.js +321 -7
  237. package/src/scripts/p.js +208 -7
  238. package/src/scripts/packages.js +313 -8
  239. package/src/scripts/path.js +209 -7
  240. package/src/scripts/ports.js +582 -8
  241. package/src/scripts/q.js +290 -8
  242. package/src/scripts/refresh-files.js +378 -10
  243. package/src/scripts/remove-smaller-files.js +500 -8
  244. package/src/scripts/rename-files-with-date.js +517 -9
  245. package/src/scripts/resize-image.js +523 -9
  246. package/src/scripts/rm-safe.js +653 -8
  247. package/src/scripts/s.js +525 -9
  248. package/src/scripts/set-git-public.js +349 -7
  249. package/src/scripts/show-desktop-icons.js +459 -7
  250. package/src/scripts/show-hidden-files.js +456 -7
  251. package/src/scripts/tpa.js +265 -8
  252. package/src/scripts/tpo.js +264 -7
  253. package/src/scripts/u.js +489 -7
  254. package/src/scripts/vpush.js +422 -8
  255. package/src/scripts/y.js +267 -7
  256. package/src/utils/common/os.js +94 -2
  257. package/src/utils/ubuntu/apt.js +13 -7
  258. package/src/utils/windows/choco.js +82 -26
  259. package/src/utils/windows/winget.js +89 -27
@@ -0,0 +1,1100 @@
1
+ # Installing Tailscale
2
+
3
+ ## Overview
4
+
5
+ Tailscale is a zero-configuration VPN service built on WireGuard that creates secure mesh networks (called tailnets) between your devices. It eliminates the complexity of traditional VPN setup by handling authentication, key exchange, and NAT traversal automatically. Tailscale is ideal for:
6
+
7
+ - **Remote access**: Securely connect to your home or office devices from anywhere
8
+ - **Developer environments**: Access development servers, databases, and services without exposing them to the public internet
9
+ - **Team networking**: Connect distributed teams with shared access to internal resources
10
+ - **IoT and home automation**: Securely reach Raspberry Pi devices, NAS systems, and smart home servers
11
+
12
+ Tailscale provides both GUI applications (for desktop platforms) and CLI-only daemons (for servers and headless systems).
13
+
14
+ ## Prerequisites
15
+
16
+ Before installing Tailscale on any platform, ensure:
17
+
18
+ 1. **Internet connectivity** - Required to download packages and authenticate with Tailscale
19
+ 2. **Administrative privileges** - Required for system-wide installation and network configuration
20
+ 3. **A Tailscale account** - Free tier supports up to 100 devices; sign up at https://tailscale.com
21
+ 4. **curl** - Required on Linux platforms for the installation script
22
+
23
+ ## Dependencies
24
+
25
+ ### macOS (Homebrew)
26
+ - **Required:**
27
+ - `Homebrew` - Install via `/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"`
28
+ - **Optional:** None
29
+ - **Auto-installed:** None
30
+
31
+ ### Ubuntu (APT/Snap)
32
+ - **Required:**
33
+ - `curl` - Install via `sudo apt-get install -y curl` (will be installed automatically if missing)
34
+ - **Optional:** None
35
+ - **Auto-installed:**
36
+ - GPG signing key (added by install script)
37
+ - APT repository configuration (added by install script)
38
+ - `tailscale` package dependencies (handled by APT)
39
+
40
+ ### Raspberry Pi OS (APT/Snap)
41
+ - **Required:**
42
+ - `curl` - Install via `sudo apt-get install -y curl` (will be installed automatically if missing)
43
+ - **Optional:** None
44
+ - **Auto-installed:**
45
+ - GPG signing key (added by install script)
46
+ - APT repository configuration (added by install script)
47
+ - `tailscale` package dependencies (handled by APT)
48
+
49
+ ### Amazon Linux (DNF/YUM)
50
+ - **Required:**
51
+ - `curl` - Install via `sudo dnf install -y curl` or `sudo yum install -y curl` (required for install script)
52
+ - **Optional:**
53
+ - `yum-utils` - Install via `sudo yum install -y yum-utils` (provides yum-config-manager for manual repository setup; only needed for YUM-based systems like AL2)
54
+ - **Auto-installed:**
55
+ - Repository configuration (added by install script or dnf/yum-config-manager)
56
+ - `tailscale` package dependencies (handled by DNF/YUM)
57
+ - systemd service configuration
58
+
59
+ ### Windows (Chocolatey/winget)
60
+ - **Required:**
61
+ - `Chocolatey` - Install via PowerShell: `Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))`
62
+ - **Optional:**
63
+ - `winget` - Alternative package manager (pre-installed on Windows 11 and recent Windows 10)
64
+ - **Auto-installed:** None
65
+
66
+ ### Git Bash (Manual/Portable)
67
+ - **Required:**
68
+ - `Chocolatey` on Windows host - Install via PowerShell (see Windows section above)
69
+ - Tailscale installed on Windows host (Git Bash inherits Windows PATH)
70
+ - **Optional:** None
71
+ - **Auto-installed:** None
72
+
73
+ ## Platform-Specific Installation
74
+
75
+ ### macOS (Homebrew)
76
+
77
+ #### Prerequisites
78
+
79
+ - macOS 12.0 (Monterey) or later
80
+ - Homebrew package manager installed
81
+ - Apple Silicon (M1/M2/M3/M4) or Intel processor
82
+
83
+ If Homebrew is not installed, install it first:
84
+
85
+ ```bash
86
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
87
+ ```
88
+
89
+ **Important**: There are three ways to run Tailscale on macOS. This guide documents the CLI-only Homebrew installation, which is recommended for servers and advanced users who prefer command-line management. For desktop use with a GUI, download the Standalone variant from https://tailscale.com/download instead.
90
+
91
+ #### Installation Steps
92
+
93
+ Run the following command to install the Tailscale CLI:
94
+
95
+ ```bash
96
+ brew install --quiet tailscale
97
+ ```
98
+
99
+ The `--quiet` flag suppresses non-essential output for cleaner automation logs.
100
+
101
+ Start the Tailscale daemon as a background service:
102
+
103
+ ```bash
104
+ sudo brew services start tailscale
105
+ ```
106
+
107
+ **Note**: The `sudo` prefix is required because Tailscale needs root privileges to configure network interfaces.
108
+
109
+ Connect to your Tailscale network:
110
+
111
+ ```bash
112
+ sudo tailscale up
113
+ ```
114
+
115
+ This command outputs an authentication URL. Open the URL in your browser to authenticate with your Tailscale account.
116
+
117
+ #### Verification
118
+
119
+ Confirm the installation succeeded:
120
+
121
+ ```bash
122
+ tailscale --version
123
+ ```
124
+
125
+ Expected output (version numbers may vary):
126
+
127
+ ```
128
+ 1.92.3
129
+ tailscale commit: abcdef1234567890
130
+ other commit: 1234567890abcdef
131
+ go version: go1.25.5
132
+ ```
133
+
134
+ Verify your Tailscale IP address:
135
+
136
+ ```bash
137
+ tailscale ip -4
138
+ ```
139
+
140
+ Check connection status:
141
+
142
+ ```bash
143
+ tailscale status
144
+ ```
145
+
146
+ #### Troubleshooting
147
+
148
+ **Problem**: `tailscale: command not found` after installation
149
+
150
+ **Solution**: The Homebrew binary path may not be in your PATH. Add it:
151
+
152
+ ```bash
153
+ echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
154
+ source ~/.zprofile
155
+ ```
156
+
157
+ **Problem**: "cannot connect to local Tailscale daemon" error
158
+
159
+ **Solution**: The tailscaled service is not running. Start it:
160
+
161
+ ```bash
162
+ sudo brew services start tailscale
163
+ ```
164
+
165
+ **Problem**: Authentication URL not appearing
166
+
167
+ **Solution**: Check if tailscaled is running and try again:
168
+
169
+ ```bash
170
+ sudo brew services restart tailscale
171
+ sudo tailscale up
172
+ ```
173
+
174
+ **Problem**: Conflict with GUI Tailscale app
175
+
176
+ **Solution**: Do not install both the Homebrew CLI version and the GUI app (Standalone or Mac App Store). They conflict with each other. Choose one:
177
+
178
+ ```bash
179
+ # If switching from GUI to CLI, first quit and delete the Tailscale app
180
+ # Then empty Trash and reboot before installing via Homebrew
181
+ ```
182
+
183
+ ---
184
+
185
+ ### Ubuntu/Debian (APT)
186
+
187
+ #### Prerequisites
188
+
189
+ - Ubuntu 18.04 (Bionic) or later, or Debian 10 (Buster) or later (64-bit or 32-bit)
190
+ - sudo privileges
191
+ - curl installed
192
+
193
+ If curl is not installed:
194
+
195
+ ```bash
196
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
197
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl
198
+ ```
199
+
200
+ #### Installation Steps
201
+
202
+ **Step 1: Run the official installation script**
203
+
204
+ Tailscale provides an automated installation script that detects your distribution and adds the appropriate repository:
205
+
206
+ ```bash
207
+ curl -fsSL https://tailscale.com/install.sh | sh
208
+ ```
209
+
210
+ This script automatically:
211
+ - Detects your Ubuntu/Debian version
212
+ - Adds Tailscale's GPG signing key
213
+ - Configures the APT repository
214
+ - Installs the tailscale package
215
+ - Enables and starts the tailscaled service
216
+
217
+ **Step 2: Connect to your Tailscale network**
218
+
219
+ ```bash
220
+ sudo tailscale up
221
+ ```
222
+
223
+ This command outputs an authentication URL. Open the URL in your browser to authenticate with your Tailscale account.
224
+
225
+ #### Manual Installation (Alternative)
226
+
227
+ If you prefer not to use the installation script, add the repository manually.
228
+
229
+ **For Ubuntu (example using 24.04 Noble):**
230
+
231
+ ```bash
232
+ # Add Tailscale's GPG key
233
+ sudo mkdir -p --mode=0755 /usr/share/keyrings
234
+ curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
235
+
236
+ # Add the repository
237
+ curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
238
+
239
+ # Install Tailscale
240
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
241
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tailscale
242
+
243
+ # Connect to your network
244
+ sudo tailscale up
245
+ ```
246
+
247
+ **Note**: Replace `noble` with your Ubuntu codename. Find yours with `lsb_release -cs`. Common codenames: `focal` (20.04), `jammy` (22.04), `noble` (24.04).
248
+
249
+ **For Debian (example using Bookworm):**
250
+
251
+ ```bash
252
+ # Add Tailscale's GPG key
253
+ sudo mkdir -p --mode=0755 /usr/share/keyrings
254
+ curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
255
+
256
+ # Add the repository
257
+ curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
258
+
259
+ # Install Tailscale
260
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
261
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tailscale
262
+
263
+ # Connect to your network
264
+ sudo tailscale up
265
+ ```
266
+
267
+ **Note**: Replace `bookworm` with your Debian codename. Common codenames: `buster` (10), `bullseye` (11), `bookworm` (12), `trixie` (13).
268
+
269
+ #### Verification
270
+
271
+ Confirm the installation succeeded:
272
+
273
+ ```bash
274
+ tailscale --version
275
+ ```
276
+
277
+ Verify your Tailscale IP address:
278
+
279
+ ```bash
280
+ tailscale ip -4
281
+ ```
282
+
283
+ Check connection status:
284
+
285
+ ```bash
286
+ tailscale status
287
+ ```
288
+
289
+ Verify the service is running:
290
+
291
+ ```bash
292
+ sudo systemctl status tailscaled
293
+ ```
294
+
295
+ #### Troubleshooting
296
+
297
+ **Problem**: GPG key import fails
298
+
299
+ **Solution**: Ensure curl and ca-certificates are installed:
300
+
301
+ ```bash
302
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y ca-certificates curl gnupg
303
+ ```
304
+
305
+ **Problem**: "Unable to locate package tailscale"
306
+
307
+ **Solution**: The repository was not added correctly. Verify the list file exists and contains the correct URL:
308
+
309
+ ```bash
310
+ cat /etc/apt/sources.list.d/tailscale.list
311
+ ```
312
+
313
+ Re-run the installation script if the file is missing or incorrect.
314
+
315
+ **Problem**: tailscaled service not running
316
+
317
+ **Solution**: Start and enable the service:
318
+
319
+ ```bash
320
+ sudo systemctl enable --now tailscaled
321
+ ```
322
+
323
+ **Problem**: DNS resolution issues after installation
324
+
325
+ **Solution**: Tailscale manages DNS for MagicDNS features. If you experience issues with non-Tailscale DNS, you can disable MagicDNS in the Tailscale admin console or run:
326
+
327
+ ```bash
328
+ sudo tailscale set --accept-dns=false
329
+ ```
330
+
331
+ ---
332
+
333
+ ### Raspberry Pi OS (APT)
334
+
335
+ #### Prerequisites
336
+
337
+ - Raspberry Pi OS (32-bit or 64-bit) - Bullseye, Bookworm, or newer recommended
338
+ - Raspberry Pi 3, 4, or 5 (64-bit capable hardware recommended)
339
+ - sudo privileges
340
+ - curl installed
341
+
342
+ Verify your architecture to understand which packages will be used:
343
+
344
+ ```bash
345
+ uname -m
346
+ ```
347
+
348
+ - `aarch64` = 64-bit (uses Debian arm64 packages)
349
+ - `armv7l` = 32-bit (uses Raspbian-specific packages)
350
+
351
+ If curl is not installed:
352
+
353
+ ```bash
354
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
355
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y curl
356
+ ```
357
+
358
+ #### Installation Steps
359
+
360
+ **Step 1: Run the official installation script**
361
+
362
+ ```bash
363
+ curl -fsSL https://tailscale.com/install.sh | sh
364
+ ```
365
+
366
+ The script automatically detects Raspberry Pi OS and configures the appropriate repository for your architecture.
367
+
368
+ **Step 2: Connect to your Tailscale network**
369
+
370
+ ```bash
371
+ sudo tailscale up
372
+ ```
373
+
374
+ This command outputs an authentication URL. Open the URL in your browser (on any device) to authenticate with your Tailscale account.
375
+
376
+ #### Manual Installation (Alternative)
377
+
378
+ If you prefer manual installation:
379
+
380
+ **For 64-bit Raspberry Pi OS (aarch64):**
381
+
382
+ ```bash
383
+ # Add Tailscale's GPG key
384
+ sudo mkdir -p --mode=0755 /usr/share/keyrings
385
+ curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null
386
+
387
+ # Add the repository (uses Debian arm64 packages)
388
+ curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list
389
+
390
+ # Install Tailscale
391
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
392
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tailscale
393
+
394
+ # Connect to your network
395
+ sudo tailscale up
396
+ ```
397
+
398
+ **For 32-bit Raspberry Pi OS (armv7l):**
399
+
400
+ ```bash
401
+ # Add Tailscale's GPG key (using legacy apt-key for older Raspbian)
402
+ curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bookworm.gpg | sudo apt-key add -
403
+
404
+ # Add the repository
405
+ curl -fsSL https://pkgs.tailscale.com/stable/raspbian/bookworm.list | sudo tee /etc/apt/sources.list.d/tailscale.list
406
+
407
+ # Install Tailscale
408
+ sudo DEBIAN_FRONTEND=noninteractive apt-get update -y
409
+ sudo DEBIAN_FRONTEND=noninteractive apt-get install -y tailscale
410
+
411
+ # Connect to your network
412
+ sudo tailscale up
413
+ ```
414
+
415
+ **Note**: Replace `bookworm` with your Raspberry Pi OS codename. Find yours with `cat /etc/os-release | grep VERSION_CODENAME`. Common codenames: `buster` (Raspbian 10), `bullseye` (Raspberry Pi OS 11), `bookworm` (Raspberry Pi OS 12).
416
+
417
+ #### Disabling Key Expiry for Always-On Devices
418
+
419
+ Raspberry Pis often run as always-on servers. By default, Tailscale keys expire after 180 days, requiring re-authentication. For headless devices, disable key expiry in the Tailscale admin console:
420
+
421
+ 1. Go to https://login.tailscale.com/admin/machines
422
+ 2. Find your Raspberry Pi in the list
423
+ 3. Click the three-dot menu and select "Disable key expiry"
424
+
425
+ **Security Warning**: Disabling key expiry reduces security. Only use this for trusted devices and revoke the key immediately if the device is lost or compromised.
426
+
427
+ #### Verification
428
+
429
+ Confirm the installation succeeded:
430
+
431
+ ```bash
432
+ tailscale --version
433
+ ```
434
+
435
+ Verify your Tailscale IP address:
436
+
437
+ ```bash
438
+ tailscale ip -4
439
+ ```
440
+
441
+ Check connection status:
442
+
443
+ ```bash
444
+ tailscale status
445
+ ```
446
+
447
+ #### Troubleshooting
448
+
449
+ **Problem**: Slow installation or downloads
450
+
451
+ **Solution**: Raspberry Pi SD cards can be slow. Consider using a high-quality Class 10 or faster SD card, or boot from USB/SSD.
452
+
453
+ **Problem**: apt-key deprecation warning on newer systems
454
+
455
+ **Solution**: Use the keyring method instead of apt-key (as shown in the 64-bit instructions). The installation script handles this automatically.
456
+
457
+ **Problem**: Cannot reach other Tailscale devices
458
+
459
+ **Solution**: Verify the tailscaled service is running:
460
+
461
+ ```bash
462
+ sudo systemctl status tailscaled
463
+ ```
464
+
465
+ If not running, start it:
466
+
467
+ ```bash
468
+ sudo systemctl enable --now tailscaled
469
+ sudo tailscale up
470
+ ```
471
+
472
+ **Problem**: Raspberry Pi loses Tailscale connection after reboot
473
+
474
+ **Solution**: Ensure tailscaled starts at boot:
475
+
476
+ ```bash
477
+ sudo systemctl enable tailscaled
478
+ ```
479
+
480
+ ---
481
+
482
+ ### Amazon Linux/RHEL (DNF/YUM)
483
+
484
+ #### Prerequisites
485
+
486
+ - Amazon Linux 2023, Amazon Linux 2, RHEL 7/8/9, or CentOS 7/8/9
487
+ - sudo privileges
488
+
489
+ **Note**: Amazon Linux 2023 uses DNF as the package manager. Amazon Linux 2, RHEL 7, and CentOS 7 use YUM. The commands below specify which package manager to use.
490
+
491
+ #### Installation Steps
492
+
493
+ **Option A: Use the official installation script (Recommended)**
494
+
495
+ ```bash
496
+ curl -fsSL https://tailscale.com/install.sh | sh
497
+ ```
498
+
499
+ The script automatically detects your distribution and version, then configures the appropriate repository.
500
+
501
+ After installation, connect to your Tailscale network:
502
+
503
+ ```bash
504
+ sudo tailscale up
505
+ ```
506
+
507
+ **Option B: Manual installation**
508
+
509
+ **For Amazon Linux 2023 (DNF):**
510
+
511
+ ```bash
512
+ # Add Tailscale repository
513
+ sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/amazon-linux/2023/tailscale.repo
514
+
515
+ # Install Tailscale
516
+ sudo dnf install -y tailscale
517
+
518
+ # Enable and start the service
519
+ sudo systemctl enable --now tailscaled
520
+
521
+ # Connect to your network
522
+ sudo tailscale up
523
+ ```
524
+
525
+ **For Amazon Linux 2 (YUM):**
526
+
527
+ ```bash
528
+ # Install yum-utils if not present
529
+ sudo yum install -y yum-utils
530
+
531
+ # Add Tailscale repository
532
+ sudo yum-config-manager --add-repo https://pkgs.tailscale.com/stable/amazon-linux/2/tailscale.repo
533
+
534
+ # Install Tailscale
535
+ sudo yum install -y tailscale
536
+
537
+ # Enable and start the service
538
+ sudo systemctl enable --now tailscaled
539
+
540
+ # Connect to your network
541
+ sudo tailscale up
542
+ ```
543
+
544
+ **For RHEL 8/9 or CentOS 8/9 (DNF):**
545
+
546
+ ```bash
547
+ # Add Tailscale repository (replace 9 with your version: 7, 8, or 9)
548
+ sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/rhel/9/tailscale.repo
549
+
550
+ # Install Tailscale
551
+ sudo dnf install -y tailscale
552
+
553
+ # Enable and start the service
554
+ sudo systemctl enable --now tailscaled
555
+
556
+ # Connect to your network
557
+ sudo tailscale up
558
+ ```
559
+
560
+ **For RHEL 7 or CentOS 7 (YUM):**
561
+
562
+ ```bash
563
+ # Install yum-utils if not present
564
+ sudo yum install -y yum-utils
565
+
566
+ # Add Tailscale repository
567
+ sudo yum-config-manager --add-repo https://pkgs.tailscale.com/stable/rhel/7/tailscale.repo
568
+
569
+ # Install Tailscale
570
+ sudo yum install -y tailscale
571
+
572
+ # Enable and start the service
573
+ sudo systemctl enable --now tailscaled
574
+
575
+ # Connect to your network
576
+ sudo tailscale up
577
+ ```
578
+
579
+ #### Verification
580
+
581
+ Confirm the installation succeeded:
582
+
583
+ ```bash
584
+ tailscale --version
585
+ ```
586
+
587
+ Verify your Tailscale IP address:
588
+
589
+ ```bash
590
+ tailscale ip -4
591
+ ```
592
+
593
+ Check connection status:
594
+
595
+ ```bash
596
+ tailscale status
597
+ ```
598
+
599
+ Verify the service is running:
600
+
601
+ ```bash
602
+ sudo systemctl status tailscaled
603
+ ```
604
+
605
+ #### Troubleshooting
606
+
607
+ **Problem**: "No package tailscale available"
608
+
609
+ **Solution**: The repository was not added correctly. Verify it exists:
610
+
611
+ ```bash
612
+ ls /etc/yum.repos.d/ | grep tailscale
613
+ cat /etc/yum.repos.d/tailscale.repo
614
+ ```
615
+
616
+ Re-add the repository if missing.
617
+
618
+ **Problem**: Repository GPG key verification fails
619
+
620
+ **Solution**: Import the GPG key manually:
621
+
622
+ ```bash
623
+ sudo rpm --import https://pkgs.tailscale.com/stable/rhel/repo.gpg
624
+ ```
625
+
626
+ **Problem**: SELinux blocking Tailscale
627
+
628
+ **Solution**: On RHEL/CentOS with SELinux enforcing, you may need to allow Tailscale:
629
+
630
+ ```bash
631
+ sudo setsebool -P tailscaled_use_all_interfaces 1
632
+ ```
633
+
634
+ Or temporarily set SELinux to permissive to diagnose:
635
+
636
+ ```bash
637
+ sudo setenforce 0
638
+ ```
639
+
640
+ **Problem**: firewalld blocking Tailscale traffic
641
+
642
+ **Solution**: Tailscale should work with firewalld, but if you have issues:
643
+
644
+ ```bash
645
+ sudo firewall-cmd --zone=trusted --add-interface=tailscale0 --permanent
646
+ sudo firewall-cmd --reload
647
+ ```
648
+
649
+ ---
650
+
651
+ ### Windows (Chocolatey)
652
+
653
+ #### Prerequisites
654
+
655
+ - Windows 10 or later, or Windows Server 2016 or later (64-bit)
656
+ - Administrator PowerShell or Command Prompt
657
+ - Chocolatey package manager installed
658
+
659
+ If Chocolatey is not installed, install it first by running this command in an Administrator PowerShell:
660
+
661
+ ```powershell
662
+ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
663
+ ```
664
+
665
+ #### Installation Steps
666
+
667
+ Run the following command in an Administrator PowerShell or Command Prompt:
668
+
669
+ ```powershell
670
+ choco install tailscale -y
671
+ ```
672
+
673
+ The `-y` flag automatically confirms all prompts, enabling fully non-interactive installation.
674
+
675
+ After installation, Tailscale will be available in your Start Menu. Launch it to complete the setup.
676
+
677
+ Alternatively, connect from the command line:
678
+
679
+ ```powershell
680
+ tailscale up
681
+ ```
682
+
683
+ This opens your default browser to authenticate with your Tailscale account.
684
+
685
+ #### Alternative: winget Installation
686
+
687
+ If you prefer winget over Chocolatey:
688
+
689
+ ```powershell
690
+ winget install --id Tailscale.Tailscale --silent --accept-package-agreements --accept-source-agreements
691
+ ```
692
+
693
+ #### Verification
694
+
695
+ Open a new Command Prompt or PowerShell window, then run:
696
+
697
+ ```powershell
698
+ tailscale --version
699
+ ```
700
+
701
+ Expected output (version numbers may vary):
702
+
703
+ ```
704
+ 1.92.3
705
+ ```
706
+
707
+ Verify your Tailscale IP address:
708
+
709
+ ```powershell
710
+ tailscale ip -4
711
+ ```
712
+
713
+ Check connection status:
714
+
715
+ ```powershell
716
+ tailscale status
717
+ ```
718
+
719
+ #### Troubleshooting
720
+
721
+ **Problem**: `tailscale: The term 'tailscale' is not recognized`
722
+
723
+ **Solution**: Close and reopen your terminal to pick up PATH changes. If the problem persists, Tailscale may not be in your PATH. Add it manually:
724
+
725
+ ```powershell
726
+ $env:Path += ";C:\Program Files\Tailscale"
727
+ ```
728
+
729
+ Or add permanently via System Properties > Environment Variables.
730
+
731
+ **Problem**: Tailscale service not running
732
+
733
+ **Solution**: Start the Tailscale service:
734
+
735
+ ```powershell
736
+ Start-Service Tailscale
737
+ ```
738
+
739
+ Or start the Tailscale GUI application from the Start Menu.
740
+
741
+ **Problem**: VPN conflicts with other software
742
+
743
+ **Solution**: Tailscale is designed to coexist with most VPNs, but some corporate VPN clients may conflict. Contact your IT department or consult Tailscale's documentation for compatibility information.
744
+
745
+ **Problem**: winget downloads wrong architecture
746
+
747
+ **Solution**: This is a known winget issue. Use Chocolatey instead, or download the MSI installer directly from https://pkgs.tailscale.com/stable/#windows and specify the correct architecture (amd64 for 64-bit).
748
+
749
+ ---
750
+
751
+ ### WSL (Ubuntu)
752
+
753
+ #### Prerequisites
754
+
755
+ - Windows 10 version 2004 or later, or Windows 11
756
+ - WSL 2 installed and configured (WSL 1 is not supported)
757
+ - Ubuntu distribution installed in WSL
758
+
759
+ Verify you are on WSL 2:
760
+
761
+ ```powershell
762
+ wsl -l -v
763
+ ```
764
+
765
+ The VERSION column should show `2` for your Ubuntu distribution.
766
+
767
+ **Important Recommendation**: If you need Tailscale on both Windows and WSL, install Tailscale on the Windows host only (see Windows section). The Windows Tailscale client provides network access that is visible to WSL 2 automatically. Running Tailscale in both Windows and WSL simultaneously can cause conflicts.
768
+
769
+ #### Installation Steps
770
+
771
+ If you specifically need Tailscale running inside WSL (not recommended for most users), follow these steps.
772
+
773
+ **Step 1: Install Tailscale in WSL**
774
+
775
+ Open your WSL Ubuntu terminal and run:
776
+
777
+ ```bash
778
+ curl -fsSL https://tailscale.com/install.sh | sh
779
+ ```
780
+
781
+ **Step 2: Start the Tailscale daemon**
782
+
783
+ WSL does not use systemd by default, so Tailscale cannot run as a service. Start it manually:
784
+
785
+ ```bash
786
+ sudo tailscaled &
787
+ ```
788
+
789
+ Wait a few seconds for the daemon to initialize, then connect:
790
+
791
+ ```bash
792
+ sudo tailscale up
793
+ ```
794
+
795
+ This outputs an authentication URL. Copy it and open in your browser to authenticate.
796
+
797
+ #### Starting Tailscale Automatically in WSL
798
+
799
+ Since WSL does not support systemd, add this to your `~/.bashrc` to start Tailscale when you open a WSL terminal:
800
+
801
+ ```bash
802
+ # Start tailscaled if not already running
803
+ if ! pgrep -x tailscaled > /dev/null; then
804
+ sudo tailscaled > /dev/null 2>&1 &
805
+ sleep 2
806
+ fi
807
+ ```
808
+
809
+ Configure passwordless sudo for tailscaled (to avoid password prompts):
810
+
811
+ ```bash
812
+ echo "$USER ALL=(ALL) NOPASSWD: /usr/sbin/tailscaled" | sudo tee /etc/sudoers.d/tailscaled
813
+ sudo chmod 0440 /etc/sudoers.d/tailscaled
814
+ ```
815
+
816
+ #### Verification
817
+
818
+ Confirm the installation succeeded:
819
+
820
+ ```bash
821
+ tailscale --version
822
+ ```
823
+
824
+ Verify your Tailscale IP address:
825
+
826
+ ```bash
827
+ tailscale ip -4
828
+ ```
829
+
830
+ Check connection status:
831
+
832
+ ```bash
833
+ tailscale status
834
+ ```
835
+
836
+ #### Troubleshooting
837
+
838
+ **Problem**: "cannot connect to local Tailscale daemon"
839
+
840
+ **Solution**: The tailscaled process is not running. Start it:
841
+
842
+ ```bash
843
+ sudo tailscaled &
844
+ sleep 2
845
+ sudo tailscale up
846
+ ```
847
+
848
+ **Problem**: DNS resolution broken after installing Tailscale
849
+
850
+ **Solution**: Tailscale modifies `/etc/resolv.conf` for MagicDNS. If this breaks regular DNS, disable Tailscale DNS:
851
+
852
+ ```bash
853
+ sudo tailscale set --accept-dns=false
854
+ ```
855
+
856
+ Or manually restore `/etc/resolv.conf`:
857
+
858
+ ```bash
859
+ sudo rm /etc/resolv.conf
860
+ sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
861
+ ```
862
+
863
+ **Problem**: Encrypted traffic fails when Tailscale runs on both Windows and WSL
864
+
865
+ **Solution**: This is expected behavior. Tailscale should run on the Windows host only, not in WSL. Uninstall from WSL:
866
+
867
+ ```bash
868
+ sudo apt-get remove -y tailscale
869
+ ```
870
+
871
+ Then use the Windows Tailscale client.
872
+
873
+ **Problem**: MTU-related connectivity issues
874
+
875
+ **Solution**: WSL 2 has a default MTU of 1280 which is too small for Tailscale. The tailscaled daemon should raise it automatically, but if issues persist:
876
+
877
+ ```bash
878
+ sudo ip link set dev eth0 mtu 1340
879
+ ```
880
+
881
+ ---
882
+
883
+ ### Git Bash (Windows Installation)
884
+
885
+ #### Prerequisites
886
+
887
+ - Windows 10 or Windows 11 (64-bit)
888
+ - Git Bash installed (comes with Git for Windows)
889
+ - Tailscale installed on Windows (see Windows section)
890
+
891
+ **Note**: Git Bash on Windows does not require a separate Tailscale installation. Git Bash inherits the Windows PATH, so once Tailscale is installed on Windows, the `tailscale` command is automatically available in Git Bash.
892
+
893
+ #### Installation Steps
894
+
895
+ 1. Install Tailscale on Windows using Chocolatey (see Windows section):
896
+
897
+ ```bash
898
+ # Run from Administrator PowerShell or Command Prompt
899
+ choco install tailscale -y
900
+ ```
901
+
902
+ 2. Start Tailscale from the Windows Start Menu or system tray
903
+
904
+ 3. Open Git Bash - the `tailscale` command will be available
905
+
906
+ #### Verification
907
+
908
+ In Git Bash, confirm Tailscale is accessible:
909
+
910
+ ```bash
911
+ tailscale --version
912
+ ```
913
+
914
+ Expected output (version numbers may vary):
915
+
916
+ ```
917
+ 1.92.3
918
+ ```
919
+
920
+ Verify your Tailscale IP address:
921
+
922
+ ```bash
923
+ tailscale ip -4
924
+ ```
925
+
926
+ Check connection status:
927
+
928
+ ```bash
929
+ tailscale status
930
+ ```
931
+
932
+ #### Troubleshooting
933
+
934
+ **Problem**: `tailscale: command not found` in Git Bash
935
+
936
+ **Solution**: The Tailscale path may not be inherited. Add it to your `~/.bashrc`:
937
+
938
+ ```bash
939
+ echo 'export PATH="$PATH:/c/Program Files/Tailscale"' >> ~/.bashrc
940
+ source ~/.bashrc
941
+ ```
942
+
943
+ **Problem**: Tailscale commands hang or timeout
944
+
945
+ **Solution**: Ensure the Tailscale Windows service is running. Check the system tray for the Tailscale icon. If not present, start Tailscale from the Start Menu.
946
+
947
+ **Problem**: Interactive prompts fail in Git Bash
948
+
949
+ **Solution**: Some Tailscale commands may not work interactively in Git Bash's mintty terminal. Use Windows Command Prompt or PowerShell for those operations, or prefix with `winpty`:
950
+
951
+ ```bash
952
+ winpty tailscale login
953
+ ```
954
+
955
+ ---
956
+
957
+ ## Post-Installation Configuration
958
+
959
+ After installing Tailscale on any platform, consider these common configurations.
960
+
961
+ ### Enabling Tailscale SSH
962
+
963
+ Tailscale SSH allows you to SSH between machines in your tailnet without managing SSH keys:
964
+
965
+ ```bash
966
+ sudo tailscale set --ssh
967
+ ```
968
+
969
+ Then SSH using Tailscale hostnames:
970
+
971
+ ```bash
972
+ ssh user@hostname
973
+ ```
974
+
975
+ ### Advertising Exit Nodes
976
+
977
+ To use a machine as an exit node (route all traffic through it):
978
+
979
+ ```bash
980
+ sudo tailscale up --advertise-exit-node
981
+ ```
982
+
983
+ On the client machine, use the exit node:
984
+
985
+ ```bash
986
+ sudo tailscale up --exit-node=<exit-node-hostname>
987
+ ```
988
+
989
+ ### Advertising Subnet Routes
990
+
991
+ To make a local network accessible via Tailscale:
992
+
993
+ ```bash
994
+ sudo tailscale up --advertise-routes=192.168.1.0/24
995
+ ```
996
+
997
+ Approve the route in the Tailscale admin console at https://login.tailscale.com/admin/machines.
998
+
999
+ ### MagicDNS
1000
+
1001
+ MagicDNS is enabled by default and allows you to reach machines by their hostname (e.g., `ssh myserver` instead of `ssh 100.x.y.z`). To disable it:
1002
+
1003
+ ```bash
1004
+ sudo tailscale set --accept-dns=false
1005
+ ```
1006
+
1007
+ ### Checking Your Tailscale Status
1008
+
1009
+ View all connected machines and their IPs:
1010
+
1011
+ ```bash
1012
+ tailscale status
1013
+ ```
1014
+
1015
+ Get your Tailscale IPv4 and IPv6 addresses:
1016
+
1017
+ ```bash
1018
+ tailscale ip
1019
+ ```
1020
+
1021
+ ---
1022
+
1023
+ ## Common Issues
1024
+
1025
+ ### Issue: Authentication Loop
1026
+
1027
+ **Symptoms**: `tailscale up` keeps asking for authentication
1028
+
1029
+ **Solutions**:
1030
+
1031
+ - Ensure you complete the authentication in your browser
1032
+ - Check that your machine appears in the admin console at https://login.tailscale.com/admin/machines
1033
+ - If using an auth key, ensure it is valid and not expired
1034
+
1035
+ ### Issue: Cannot Reach Other Tailscale Devices
1036
+
1037
+ **Symptoms**: Ping or connection to other tailnet devices times out
1038
+
1039
+ **Solutions**:
1040
+
1041
+ - Verify both devices are connected: `tailscale status`
1042
+ - Check for firewall rules blocking Tailscale traffic
1043
+ - Ensure the tailscaled service is running on both devices
1044
+ - Try restarting Tailscale: `sudo tailscale down && sudo tailscale up`
1045
+
1046
+ ### Issue: Key Expiry
1047
+
1048
+ **Symptoms**: Device disconnects after 180 days
1049
+
1050
+ **Solutions**:
1051
+
1052
+ - Re-authenticate: `sudo tailscale up`
1053
+ - For servers/always-on devices, disable key expiry in the admin console
1054
+
1055
+ ### Issue: Slow Connection or High Latency
1056
+
1057
+ **Symptoms**: Connections work but are slow
1058
+
1059
+ **Solutions**:
1060
+
1061
+ - Check if traffic is being relayed (DERP): `tailscale netcheck`
1062
+ - Ensure UDP port 41641 is not blocked by firewalls
1063
+ - Direct connections are faster; relay is used as fallback
1064
+
1065
+ ### Issue: Tailscale Conflicts with Another VPN
1066
+
1067
+ **Symptoms**: Tailscale or other VPN stops working when both are active
1068
+
1069
+ **Solutions**:
1070
+
1071
+ - Tailscale is designed to coexist with most VPNs
1072
+ - If conflict occurs, consult https://tailscale.com/kb/1105/other-vpns/
1073
+ - As a workaround, disconnect the other VPN when using Tailscale
1074
+
1075
+ ### Issue: DNS Resolution Failures
1076
+
1077
+ **Symptoms**: Cannot resolve hostnames after enabling Tailscale
1078
+
1079
+ **Solutions**:
1080
+
1081
+ - Tailscale manages DNS for MagicDNS; this is expected behavior
1082
+ - To use your original DNS: `sudo tailscale set --accept-dns=false`
1083
+ - Restart your browser or clear DNS cache after changing settings
1084
+
1085
+ ---
1086
+
1087
+ ## References
1088
+
1089
+ - [Tailscale Official Documentation](https://tailscale.com/kb/)
1090
+ - [Install Tailscale on macOS](https://tailscale.com/kb/1016/install-mac)
1091
+ - [Three Ways to Run Tailscale on macOS](https://tailscale.com/kb/1065/macos-variants)
1092
+ - [Install Tailscale on Linux](https://tailscale.com/kb/1031/install-linux)
1093
+ - [Install Tailscale on Windows](https://tailscale.com/kb/1022/install-windows)
1094
+ - [Install Tailscale on Windows with MSI](https://tailscale.com/kb/1189/install-windows-msi)
1095
+ - [Install Tailscale in WSL 2](https://tailscale.com/kb/1295/install-windows-wsl2)
1096
+ - [Tailscale Packages Repository](https://pkgs.tailscale.com/stable/)
1097
+ - [Tailscale Homebrew Formula](https://formulae.brew.sh/formula/tailscale)
1098
+ - [Tailscale Chocolatey Package](https://community.chocolatey.org/packages/tailscale)
1099
+ - [Tailscale GitHub Repository](https://github.com/tailscale/tailscale)
1100
+ - [Tailscale Download Page](https://tailscale.com/download)