Skip to content

Instantly share code, notes, and snippets.

@spookyuser
Created October 28, 2024 15:33
Show Gist options
  • Select an option

  • Save spookyuser/f6a773d39e8430e5b33d41a5d20cb6f1 to your computer and use it in GitHub Desktop.

Select an option

Save spookyuser/f6a773d39e8430e5b33d41a5d20cb6f1 to your computer and use it in GitHub Desktop.

Revisions

  1. spookyuser created this gist Oct 28, 2024.
    119 changes: 119 additions & 0 deletions install.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,119 @@

    #!/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