https://github.com/pabsan-0/tmux-lan-deploy
Shared code and terminal across LAN devices
https://github.com/pabsan-0/tmux-lan-deploy
lan repos-devtools sshfs tmux
Last synced: 7 days ago
JSON representation
Shared code and terminal across LAN devices
- Host: GitHub
- URL: https://github.com/pabsan-0/tmux-lan-deploy
- Owner: pabsan-0
- Created: 2023-05-12T07:20:17.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2023-05-23T09:08:48.000Z (almost 3 years ago)
- Last Synced: 2025-01-23T16:53:03.483Z (about 1 year ago)
- Topics: lan, repos-devtools, sshfs, tmux
- Homepage:
- Size: 32.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# tmux-lan-deploy
A template workspace to work with a shared codebase and terminal across different machines in LAN through nested tmux sessions.
## Use case
You're really tired and you have:
- Two or more ssh-ready machines in LAN
- That need to run some platform-specific code
- Which may or may not be distributed across different packages or repos
- Which may or may not need to be developed in a joint setup
Hence, here is a single workspace:
- Shared in a mount point via sshfs
- In which you can implement your automation scripts
- That call code arbitrarily distributed
- That can run at the same time in different machines
## Dependencies
Assuming all your machines can already connect among them via `ssh`, you may need the following additional packages.
Host machine:
```
$ apt install sshfs openssh-sftp-server \
ncat tmux tmuxinator
```
Client machines:
```
$ apt install sshfs openssh-sftp-server
$ apt install tmux tmuxinator # optional, only for nested sessions
```
## Setting up
From the provided boilerplate, adjust the `tmuxinator.yml` and `ssh.config` files to your liking.
- Tune `tmuxinator.yml` to connect `tmux` panes to your devices: `ssh -F ssh.config user@192.168.21.28`
- Tune `ssh.config` to define networking behavior for each desired connection.
- Ajust target IP addresses
- Assign arbitrary unique ports to enable reverse-calling `sshfs`
- Specify the shared dir on the host and its mount path on clients
On clients, ensure the mount path exists as an empty directory.
Find a `ssh.config` file overview for a single connection [here](.fig/ssh_config.png).
## Quickstart
Run `./tmuxinator.yml` to start the parent `tmux` session that will get everything moving. Its prefix key has been changed to `^A` so that any client can use the default, see and modify the repo's `tmux.conf` file as you like.
After you're logged in the remotes, try sweet commands like `ls` or `touch f` to verify that your files are indeed being shared.
Be very careful and mind the following:
- Mount point could be left unmounted, keep an eye on warnings if any
- Mount point is read/write for all clients
- Weird stuff can happen when layering `tmux`
- Do not put more than one finger in the power plug