bash <(curl -fsSL https://raw.githubusercontent.com/9001/copyparty/hovudstraum/scripts/install.py) && python3 - <<'PY' import os, json, getpass, socket def ask(q, d=None): p = f"{q}" if d is not None: p += f" ({d})" p += ": " v = input(p).strip() return v if v else d print("\n=== Raspbian File Server Setup ===\n") cfg = { "port": ask("Port", "3923"), "folder": ask("Folder to share", os.path.expanduser("~/share")), "user": ask("Username", "admin"), "pass": ask("Password", "raspberry"), "write": ask("Allow uploads? [y/n]", "y").lower().startswith("y"), "public": ask("Public/no-login mode? [y/n]", "n").lower().startswith("y"), } os.makedirs(cfg["folder"], exist_ok=True) args = [ "-p", cfg["port"], cfg["folder"], ] if cfg["public"]: args += ["-a", ":", "-v", f"{cfg['folder']}:rw"] else: perms = "rw" if cfg["write"] else "r" args += [ "-a", f"{cfg['user']}:{cfg['pass']}", "-v", f"{cfg['folder']}:{cfg['user']}:{perms}" ] cmd = "copyparty " + " ".join(f'"{x}"' for x in args) svc = f"""[Unit] Description=Copyparty File Server After=network.target [Service] ExecStart={cmd} Restart=always [Install] WantedBy=multi-user.target """ open("/tmp/copyparty.service","w").write(svc) os.system("sudo mv /tmp/copyparty.service /etc/systemd/system/copyparty.service") os.system("sudo systemctl daemon-reload") os.system("sudo systemctl enable --now copyparty.service") ip = socket.gethostbyname(socket.gethostname()) print("\n=== DONE ===") print(f"Local URL: http://{ip}:{cfg['port']}") print(f"Shared dir: {cfg['folder']}") if not cfg["public"]: print(f"Login: {cfg['user']} / {cfg['pass']}") print("\nService controls:") print(" sudo systemctl status copyparty") print(" sudo systemctl restart copyparty") PY