Skip to content

Instantly share code, notes, and snippets.

@spookyuser
Created October 28, 2024 15:33
Show Gist options
  • Save spookyuser/f6a773d39e8430e5b33d41a5d20cb6f1 to your computer and use it in GitHub Desktop.
Save spookyuser/f6a773d39e8430e5b33d41a5d20cb6f1 to your computer and use it in GitHub Desktop.
#!/bin/bash
# Install required packages
sudo apt update
sudo apt install -y \
avahi-daemon \
avahi-discover \
samba \
samba-common-bin \
tigervnc-standalone-server \
libnss-mdns
# Configure Samba
sudo cat > /etc/samba/smb.conf << 'EOF'
[global]
workgroup = WORKGROUP
server string = %h server
mdns name = mdns
multicast dns register = yes
wins support = yes
dns proxy = no
log file = /var/log/samba/log.%m
max log size = 1000
client min protocol = SMB2
server min protocol = SMB2
server role = standalone server
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
map to guest = bad user
usershare allow guests = yes
name resolve order = bcast host
security = user
guest account = nobody
usershare path = /var/lib/samba/usershare
usershare max shares = 100
usershare owner only = false
force create mode = 0070
force directory mode = 0070
[homes]
comment = Home Directories
browseable = yes
read only = no
create mask = 0700
directory mask = 0700
valid users = %S
[Public]
comment = Public Files
path = /home/public
public = yes
writable = yes
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775
guest ok = yes
EOF
# Create public share directory
sudo mkdir -p /home/public
sudo chmod 777 /home/public
# Configure Avahi for VNC advertisement
sudo cat > /etc/avahi/services/vnc.service << 'EOF'
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_rfb._tcp</type>
<port>5900</port>
</service>
</service-group>
EOF
# Configure Avahi for SMB advertisement
sudo cat > /etc/avahi/services/smb.service << 'EOF'
<?xml version="1.0" standalone='no'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_smb._tcp</type>
<port>445</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=RackMac</txt-record>
</service>
</service-group>
EOF
# Restart services
sudo systemctl restart avahi-daemon
sudo systemctl restart smbd
sudo systemctl restart nmbd
# Create Samba user (run this interactively)
echo "Create a Samba user matching your Linux username:"
echo "sudo smbpasswd -a \$USER"
# Setup VNC
mkdir -p ~/.vnc
vncpasswd
cat > ~/.vnc/xstartup << 'EOF'
#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4
EOF
chmod +x ~/.vnc/xstartup
vncserver :1 -geometry 1920x1080 -depth 24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment