mirror of
https://github.com/unifi-utilities/unifios-utilities.git
synced 2024-08-30 18:32:21 +00:00
Modularization updates (#12)
* Store install-cni-plugins.sh once * Newlines in on-boot-script * Update example on_boot.sh for directory * Update README.md examples * Store 20-dns.conflist once * Add modularized nextdns config w/IPv6 support * Make nextdns script more generic * Use common setup script for each dns service * Add missing newlines * Readme updates and ipv6 support * Readme updates and ipv6 support * Final updates and Ipv6 Co-authored-by: exodious <exodious@users.noreply.github.com>
This commit is contained in:
@ -1,75 +1,69 @@
|
||||
# UDM / UDMPro Boot Script
|
||||
### Features
|
||||
1. Allows you to run a shell script at S95 anytime your UDM starts / reboots
|
||||
1. Persists through reboot
|
||||
1. Must be re-done after firmware updates
|
||||
|
||||
### Compatiblity
|
||||
### Compatibility
|
||||
1. Should work on any UDM/UDMPro after 1.6.3
|
||||
2. Tested and confirmed on 1.6.6, 1.7.0, 1.7.2rc4
|
||||
|
||||
2. Tested and confirmed on 1.6.6, 1.7.0, 1.7.2rc4, 1.7.3rc1
|
||||
|
||||
## Steps
|
||||
# 1. Make your script on the UDM/UDMPRO
|
||||
```
|
||||
vi /mnt/data/on_boot.sh
|
||||
chmod u+x /mnt/data/on_boot.sh
|
||||
```
|
||||
Example: see examples/udm-files/on_boot.sh
|
||||
```
|
||||
#!/bin/sh
|
||||
podman start wpa_supplicant-udmpro
|
||||
|
||||
iptables -t nat -C PREROUTING -p udp ! --source 10.0.0.x ! --destination 10.0.0.x --dport 53 -j DNAT --to 10.0.0.x || iptables -t nat -A PREROUTING -p udp ! --source 10.0.0.x ! --destination 10.0.0.x --dport 53 -j DNAT --to 10.0.0.x
|
||||
iptables -t nat -C PREROUTING -p tcp ! --source 10.0.0.x ! --destination 10.0.0.x --dport 53 -j DNAT --to 10.0.0.x || iptables -t nat -A PREROUTING -p tcp ! --source 10.0.0.x ! --destination 10.0.0.x --dport 53 -j DNAT --to 10.0.0.x
|
||||
iptables -t nat -C POSTROUTING -j MASQUERADE || iptables -t nat -A POSTROUTING -j MASQUERADE
|
||||
```
|
||||
### Automated Setup
|
||||
|
||||
1. Copy [install.sh](install.sh) to your UDM and execute it
|
||||
1. Copy any shell scripts you want to run to /mnt/data/on_boot.d and make sure they are executable and have the correct shebang (#!/bin/sh)
|
||||
Examples:
|
||||
* Start a DNS Container [10-dns.sh](../dns-common/on_boot.d/10-dns.sh)
|
||||
* Start wpa_supplicant [on_boot.d/10-wpa_supplicant.sh](examples/udm-files/on_boot.d/10-wpa_supplicant.sh)
|
||||
|
||||
# 2. Make the unifios docker container execute this script on startup, this has to be done after every firmware update. It does persist through reboots.
|
||||
### Manual Setup
|
||||
|
||||
## Automatic
|
||||
1. Copy on_boot.sh and make on_boot.d and add scripts to on_boot.d
|
||||
```shell script
|
||||
mkdir -p /mnt/data/on_boot.d
|
||||
vi /mnt/data/on_boot.sh
|
||||
chmod u+x /mnt/data/on_boot.sh
|
||||
```
|
||||
Example: [on_boot.sh](examples/udm-files/on_boot.sh)
|
||||
|
||||
1. Copy install.sh and install-unifios.sh to your UDM
|
||||
2. Execute install.sh
|
||||
1. Enter the container shell
|
||||
```shell script
|
||||
unifi-os shell
|
||||
```
|
||||
1. make a script that sshs to the udm and runs on our boot script. 127.0.1.1 always points to the UDM
|
||||
```shell script
|
||||
echo "#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no root@127.0.1.1 '/mnt/data/on_boot.sh'" > /etc/init.d/udm.sh
|
||||
chmod u+x /etc/init.d/udm.sh
|
||||
```
|
||||
Example: [udm.sh](examples/unifi-os-files/udm.sh)
|
||||
1. make a service that runs on startup, after we have networking
|
||||
```shell script
|
||||
echo "[Unit]
|
||||
Description=Run On Startup UDM
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/etc/init.d/udm.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" > /etc/systemd/system/udmboot.service
|
||||
```
|
||||
Example: [udmboot.service](examples/unifi-os-files/udmboot.service)
|
||||
|
||||
## Manual
|
||||
```
|
||||
podman exec -it unifi-os sh
|
||||
```
|
||||
### make a script that sshs to the udm and runs on our boot script
|
||||
Example: examples/unifi-os-files/udm.sh
|
||||
```
|
||||
echo "#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no root@127.0.1.1 '/mnt/data/on_boot.sh'" > /etc/init.d/udm.sh # 127.0.1.1 always points to the UDM
|
||||
```
|
||||
#### make said script executable
|
||||
```
|
||||
chmod u+x /etc/init.d/udm.sh
|
||||
```
|
||||
### make a service that runs on startup, after we have networking
|
||||
Example: examples/unifi-os-files/udmboot.service
|
||||
```
|
||||
echo "[Unit]
|
||||
Description=Run On Startup UDM
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/etc/init.d/udm.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" > /etc/systemd/system/udmboot.service
|
||||
```
|
||||
|
||||
### enable it and test
|
||||
```
|
||||
systemctl enable udmboot
|
||||
systemctl start udmboot
|
||||
```
|
||||
### back to the udm
|
||||
```
|
||||
exit
|
||||
```
|
||||
# reboot your udm/udmpro and make sure it worked
|
||||
```
|
||||
reboot
|
||||
exit
|
||||
```
|
||||
1. enable it and test
|
||||
```shell script
|
||||
systemctl enable udmboot
|
||||
systemctl start udmboot
|
||||
```
|
||||
1. back to the udm
|
||||
```shell script
|
||||
exit
|
||||
```
|
||||
1. reboot your udm/udmpro and make sure it worked
|
||||
```shell script
|
||||
reboot
|
||||
exit
|
||||
```
|
||||
|
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
## create files like this with different numbers for execution order
|
||||
## ala /etc/profile.d
|
||||
|
||||
## example command to run, please replace with your own.
|
||||
podman start wpa_supplicant-udmpro
|
@ -1,5 +1,9 @@
|
||||
#!/bin/sh
|
||||
|
||||
## example command to run, please replace with your own.
|
||||
podman start wpa_supplicant-udmpro
|
||||
|
||||
if [ -d /mnt/data/on_boot.d ]; then
|
||||
for i in /mnt/data/on_boot.d/*.sh; do
|
||||
if [ -r $i ]; then
|
||||
. $i
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
@ -1,2 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
ssh -o StrictHostKeyChecking=no root@127.0.1.1 '/mnt/data/on_boot.sh'
|
||||
|
@ -1,4 +1,5 @@
|
||||
#!/bin/sh
|
||||
|
||||
echo "#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no root@127.0.1.1 '/mnt/data/on_boot.sh'" > /etc/init.d/udm.sh
|
||||
chmod u+x /etc/init.d/udm.sh
|
||||
@ -14,4 +15,4 @@ ExecStart=/etc/init.d/udm.sh
|
||||
WantedBy=multi-user.target" > /etc/systemd/system/udmboot.service
|
||||
|
||||
systemctl enable udmboot
|
||||
systemctl start udmboot
|
||||
systemctl start udmboot
|
||||
|
@ -1,3 +1,45 @@
|
||||
podman cp install-unifios.sh unifi-os:/root/install-unifios.sh
|
||||
podman exec unifi-os chmod +x /root/install-unifios.sh
|
||||
podman exec unifi-os sh -c /root/install-unifios.sh
|
||||
#!/bin/sh
|
||||
|
||||
echo "Creating on boot script on device"
|
||||
echo '#!/bin/sh
|
||||
|
||||
if [ -d /mnt/data/on_boot.d ]; then
|
||||
for i in /mnt/data/on_boot.d/*.sh; do
|
||||
if [ -r $i ]; then
|
||||
. $i
|
||||
fi
|
||||
done
|
||||
fi
|
||||
' > /mnt/data/on_boot.sh
|
||||
|
||||
chmod u+x /mnt/data/on_boot.sh
|
||||
mkdir -p /mnt/data/on_boot.d
|
||||
|
||||
echo "Creating script to modify unifios container"
|
||||
echo '#!/bin/sh
|
||||
|
||||
echo "#!/bin/sh
|
||||
ssh -o StrictHostKeyChecking=no root@127.0.1.1 ''/mnt/data/on_boot.sh''" > /etc/init.d/udm.sh
|
||||
chmod u+x /etc/init.d/udm.sh
|
||||
|
||||
echo "[Unit]
|
||||
Description=Run On Startup UDM
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
ExecStart=/etc/init.d/udm.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target" > /etc/systemd/system/udmboot.service
|
||||
|
||||
systemctl enable udmboot
|
||||
systemctl start udmboot
|
||||
' > /tmp/install-unifios.sh
|
||||
|
||||
podman cp /tmp/install-unifios.sh unifi-os:/root/install-unifios.sh
|
||||
podman exec -it unifi-os chmod +x /root/install-unifios.sh
|
||||
echo "Executing container modifications"
|
||||
podman exec -it unifi-os sh -c /root/install-unifios.sh
|
||||
rm /tmp/install-unifios.sh
|
||||
|
||||
echo "Installed on_boot hook. Populate /mnt/data/on_boot.d with scripts to run"
|
Reference in New Issue
Block a user