#!/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'
%h
_rfb._tcp
5900
EOF
# Configure Avahi for SMB advertisement
sudo cat > /etc/avahi/services/smb.service << 'EOF'
%h
_smb._tcp
445
_device-info._tcp
0
model=RackMac
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