<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Usage :: goshs Documentation</title>
    <link>https://docs.goshs.de/usage/index.html</link>
    <description>Usage is quite simple. Explanation of the specific features can be found in the submenu.&#xA;goshs v2.1.1 Usage: goshs [options] Web server options: -i, --ip IP or Interface to listen on (default: 0.0.0.0) -p, --port The port to listen on (default: 8000) -d, --dir The web root directory (default: current working path) -w, --webdav Also serve using webdav protocol (default: false) -wp, --webdav-port The port to listen on for webdav (default: 8001) -ro, --read-only Read only mode, no upload possible (default: false) -uo, --upload-only Upload only mode, no download possible (default: false) -uf, --upload-folder Specify a different upload folder (default: current working path) -nc, --no-clipboard Disable the clipboard sharing (default: false) -nd, --no-delete Disable the delete option (default: false) -si, --silent Running without dir listing (default: false) -I, --invisible Invisible mode (default: false) -c, --cli Enable cli (only with auth and tls) (default: false) -e, --embedded Show embedded files in UI (default: false) -o, --output Write output to logfile (default: false) -t, --tunnel Enable tunnel (default: false) --catcher, -rc Enable reverse shell catcher (default: false) TLS options: -s, --ssl Use TLS -ss, --self-signed Use a self-signed certificate -sk, --server-key Path to server key -sc, --server-cert Path to server certificate -p12, --pkcs12 Path to server p12 -p12np, --p12-no-pass Server p12 has empty password -sl, --lets-encrypt Use Let&#39;s Encrypt as certification service -sld, --le-domains Domain(s) to request from Let&#39;s Encrypt (comma separated list) -sle, --le-email Email to use with Let&#39;s Encrypt -slh, --le-http Port to use for Let&#39;s Encrypt HTTP Challenge (default: 80) -slt, --le-tls Port to use for Let&#39;s Encrypt TLS ALPN Challenge (default: 443) FTP/SFTP server options: -ftp Activate FTP server capabilities (default: false) -ftp-port The port FTP/SFTP listens on (default: 2121) -ftp-sftp Switch to SFTP instead of plain FTP (default: false) -fkf, --ftp-keyfile Authorized_keys file for SFTP pubkey auth -fhk, --ftp-host-keyfile SSH host key file for SFTP identification SMB server options: -smb Activate SMB server capabilities (default: false) -smb-port, --smb-port The port SMB listens on (default: 445) -smb-domain, --smb-domain The domain to use for SMB authentication (default: WORKGROUP) -smb-share, --smb-share The share to use for SMB authentication (default: goshs) -smb-wordlist Wordlist file for quick hash cracking (default: none) Authentication options: -b, --basic-auth Use basic authentication (user:pass - user can be empty) -ca, --cert-auth Use certificate based authentication - provide ca certificate -H, --hash Hash a password for file based ACLs Connection restriction: -ipw, --ip-whitelist Comma separated list of IPs to whitelist -tpw, --trusted-proxy-whitelist Comma separated list of trusted proxies Collaboration options: -dns, --dns-server Enable DNS server (default: false) -dns-port, --dns-port DNS server port (default: 8053) -dns-ip, --dns-ip DNS server Reply IP (default: 127.0.0.1) -smtp, --smtp-server Enable SMTP server (default: false) -smtp-port, --smtp-port SMTP server port (default: 2525) -smtp-domain, --smtp-domain SMTP server domain (default: open relay) Webhook options: -W, --webhook Enable webhook support (default: false) -Wu, --webhook-url URL to send webhook requests to -We, --webhook-events Comma separated list of events to notify [all, upload, delete, download, view, webdav, sftp, smb, dns, smtp, verbose] (default: all) -Wp, --webhook-provider Webhook provider [Discord, Mattermost, Slack] (default: Discord) Misc options: -C --config Provide config file path (default: false) -P --print-config Print sample config to STDOUT (default: false) -u --user Drop privs to user (unix only) (default: current user) --update Update goshs to most recent version -m --mdns Enable zeroconf mDNS registration (default: false) --tui Run the interactive terminal dashboard (default: false) --ttl Self-destruct after a duration, e.g. 30m, 2h (default: disabled) -V --verbose Activate verbose log output (default: false) -v Print the current goshs version Usage examples: Start with default values: ./goshs Start with config file: ./goshs -C /path/to/config.json Start with webdav support: ./goshs -w Start with different port: ./goshs -p 8080 Start with self-signed cert: ./goshs -s -ss Start with let&#39;s encrypt: ./goshs -s -sl -sle your@mail.com -sld your.domain.com,your.seconddomain.com Start with custom cert: ./goshs -s -sk &lt;path to key&gt; -sc &lt;path to cert&gt; Start with basic auth: ./goshs -b &#39;secret-user:$up3r$3cur3&#39; Start with basic auth bcrypt hash: ./goshs -b &#39;secret-user:$2a$14$ydRJ//Ob4SctB/D7o.rvU.LmPs/vwXkeXCbtpCqzgOJDSShLgiY52&#39; Start with basic auth empty user: ./goshs -b &#39;:$up3r$3cur3&#39; Start with cli enabled: ./goshs -b &#39;secret-user:$up3r$3cur3&#39; -s -ss -c Start with SMB capture: ./goshs -smb -smb-domain CORP -smb-share files Start with DNS server: ./goshs -dns -dns-ip 10.10.14.1 Start with SMTP server: ./goshs -smtp -smtp-domain mail.example.com Start with reverse shell catcher: ./goshs -s -ss -b user:pass --catcher Start with TTL self-destruct (2h): ./goshs --ttl 2h Start with TUI dashboard: ./goshs --tui</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Tue, 23 Jun 2026 09:00:00 +0200</lastBuildDate>
    <atom:link href="https://docs.goshs.de/usage/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Basic usage</title>
      <link>https://docs.goshs.de/usage/basic/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:36:18 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/basic/index.html</guid>
      <description>Run it You can simply run it and it will start from the current working directory on port 8000.&#xA;$ goshs INFO [2024-07-04 18:01:46] Download embedded file at: /example.txt?embedded INFO [2024-07-04 18:01:46] Serving on interface lo bound to 127.0.0.1:8000 INFO [2024-07-04 18:01:46] Serving on interface eth0 bound to 10.137.0.27:8000 INFO [2024-07-04 18:01:46] Serving HTTP from /home/user Port To change the port you use -p.</description>
    </item>
    <item>
      <title>Config File</title>
      <link>https://docs.goshs.de/usage/config/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:36:18 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/config/index.html</guid>
      <description>Use a config file to control how goshs behaves It is possible to control goshs via a JSON config file. You just need to create the config and provide all parameters.&#xA;Info The config file will overwrite all provided config flags.&#xA;You can use this config struct as an example.</description>
    </item>
    <item>
      <title>File handling</title>
      <link>https://docs.goshs.de/usage/file-handling/index.html</link>
      <pubDate>Fri, 05 Jul 2024 09:10:41 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/file-handling/index.html</guid>
      <description>goshs lets you download and upload files. And you can also delete files, as well.</description>
    </item>
    <item>
      <title>Authentication</title>
      <link>https://docs.goshs.de/usage/authentication/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:57:29 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/authentication/index.html</guid>
      <description>There are two options for authentication that can be used exclusively or combined:&#xA;Basic Authentication Certificate Based Authentication</description>
    </item>
    <item>
      <title>Transport Layer Security (TLS) / HTTPS</title>
      <link>https://docs.goshs.de/usage/tls/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/tls/index.html</guid>
      <description>Use TLS to secure the connection You can use TLS in a variety of ways.&#xA;Self-signed Certificate Provide own key and cert Let’s encrypt</description>
    </item>
    <item>
      <title>Tunnel via localhost.run</title>
      <link>https://docs.goshs.de/usage/tunnel/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/tunnel/index.html</guid>
      <description>Use localhost.run to tunnel goshs to the internet You can use localhost.run to tunnel goshs to the internet. For this to work it is important not to use -s but keep it plaintext. Then use -t or --tunnel to start goshs with tunneling enabled.&#xA;$ goshs --tunnel INFO [2024-07-07 15:21:32] You are running the newest version (v1.1.4) of goshs INFO [2024-07-07 15:21:32] Download embedded file at: /example.txt?embedded INFO [2024-07-07 15:21:33] Public tunnel URL: https://e8dae599c7b6ac.lhr.life INFO [2024-07-07 15:21:33] Serving on interface eth0 bound to 10.137.0.25:8000 INFO [2024-07-07 15:21:33] Serving on interface docker0 bound to 172.17.0.1:8000 INFO [2024-07-07 15:21:33] Serving on interface lo bound to 127.0.0.1:8000 INFO [2024-07-07 15:21:33] Serving HTTP from /home/user If you now visit https://e8dae599c7b6ac.lhr.life, as shown in the log line above, you should see your goshs content.</description>
    </item>
    <item>
      <title>Restricting functions</title>
      <link>https://docs.goshs.de/usage/restrictions/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:47 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/restrictions/index.html</guid>
      <description>Restricting functions You can restrict the goshs functions, for example if you want to block download or upload of files. You can also activate silent mode, so that the UI is omitted.&#xA;Block uploads (read-only) You can block the upload function by using the read only mode with -ro. Uploads will not be possible anymore.</description>
    </item>
    <item>
      <title>Command Prompt</title>
      <link>https://docs.goshs.de/usage/command-prompt/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:30 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/command-prompt/index.html</guid>
      <description>Use interactive terminal You can start goshs with a command line (-c). Then you will be able to run arbitrary commands on the host running goshs as the user it is running.&#xA;Warning Please be aware that this mode is dangerous. Therefore it is required to at least use it with -s and -b.</description>
    </item>
    <item>
      <title>Webdav</title>
      <link>https://docs.goshs.de/usage/webdav/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:00 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/webdav/index.html</guid>
      <description>How to use goshs as webdav server You can use goshs to also provide the files using the webdav protocol by using -w. The default webdav port is 8001 and can be changed using -wp.&#xA;The following screenshots will show an example usage on Microsoft Windows.</description>
    </item>
    <item>
      <title>FTP / SFTP</title>
      <link>https://docs.goshs.de/usage/sftp/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:00 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/sftp/index.html</guid>
      <description>How to use goshs as FTP or SFTP server goshs can serve files over FTP or SFTP using the -ftp flag. By default -ftp activates a plain FTP server on port 2121. Adding -ftp-sftp switches to SFTP mode instead.&#xA;Plain FTP # Start plain FTP server on default port 2121 goshs -ftp # Start on a custom port goshs -ftp -ftp-port 2121 Connect with any standard FTP client:</description>
    </item>
    <item>
      <title>Clipboard</title>
      <link>https://docs.goshs.de/usage/clipboard/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:57:29 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/clipboard/index.html</guid>
      <description>Use the clipboard goshs is providing a non-persistent clipboard that is synchronized via a websocket connection throughout all browsers visiting the goshs page.&#xA;The clipboard can be cleared and can be downloaded in json format.&#xA;[ { &#34;ID&#34;: 0, &#34;Content&#34;: &#34;This is a test&#34;, &#34;Time&#34;: &#34;Wed May 31 16:03:26 2023&#34; }, { &#34;ID&#34;: 1, &#34;Content&#34;: &#34;goshs is awesome&#34;, &#34;Time&#34;: &#34;Wed May 31 16:03:30 2023&#34; } ]</description>
    </item>
    <item>
      <title>Embed files at compile time</title>
      <link>https://docs.goshs.de/usage/embed/index.html</link>
      <pubDate>Thu, 04 Jul 2024 09:49:21 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/embed/index.html</guid>
      <description>How to embed files into goshs Info For this to work you will have to compile goshs yourself. See the section Build yourself for instructions.&#xA;You can embed files at compile time and ship them with your version of goshs. Any file that is in the folder embedded in the project root will be compiled into the binary and will be available while running. There is already a file called example.txt in the folder by default to demonstrate the feature.</description>
    </item>
    <item>
      <title>File based ACLs</title>
      <link>https://docs.goshs.de/usage/file-based-acls/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/file-based-acls/index.html</guid>
      <description>Use file based access control lists You can apply file based access control lists per folder by placing a file called .goshs in that folder. The files content is like:&#xA;{ &#34;auth&#34;:&#34;&lt;user&gt;:&lt;hash&gt;&#34;, &#34;block&#34;:[ &#34;file1&#34;, &#34;file2&#34;, &#34;folder/&#34; ] } Custom Basic Authentication The setting auth lets you define a custom basic authentication for the corresponding folder. The hash you need to enter as a password replacement can be generated using goshs as well using --hash:</description>
    </item>
    <item>
      <title>Webhook Notifications</title>
      <link>https://docs.goshs.de/usage/webhook-notifications/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/webhook-notifications/index.html</guid>
      <description>You can have goshs send notifications using webhooks. The following webhook providers are supported:&#xA;Discord Mattermost Slack Use the following combination of arguments to use webhooks:&#xA;Webhook options: -W, --webhook Enable webhook support (default: false) -Wu, --webhook-url URL to send webhook requests to -We, --webhook-events Comma separated list of events to notify [all, upload, delete, download, view, webdav, ftp, sftp, smb, dns, smtp, redirect, verbose] (default: all) -Wp, --webhook-provider Webhook provider [Discord, Mattermost, Slack] (default: Discord) An example for Discord would be:</description>
    </item>
    <item>
      <title>IP Whitelisting</title>
      <link>https://docs.goshs.de/usage/ip-whitelist/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/ip-whitelist/index.html</guid>
      <description>You can restrict access for Web, WebDAV and SFTP using IP whitelisting. The whitelist is also proxy aware and will parse X-Forwarded-For and X-Real-IP header for trusted proxies.&#xA;You can define whitelists in CIDR notation for IPv4 and IPv6 using the flags -ipw --ip-whitelist and -tpw --trusted-proxy-whitelist.&#xA;goshs -ipw 127.0.0.1,192.168.0.1/24,217.147.137.129 -tpw 192.168.0.1/24,217.147.137.1 This will accept connections from 127.0.0.1, 192.168.0.1/24, 217.147.137.129 and trust proxies 192.168.0.1/24, 217.147.137.1.</description>
    </item>
    <item>
      <title>Share Links</title>
      <link>https://docs.goshs.de/usage/sharelinks/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/sharelinks/index.html</guid>
      <description>When using authentication with -b (Basic Authentication) or -ca (Certificate Authentication) you can share files with someone without giving them credentials.&#xA;Now you can set a time limit in minutes and if you like a download limit. The defaults are 60 minutes and unlimited downloads.&#xA;After submitting with the button Generate Share Links you will be presented with the links that you could provide to someone and with QR Codes for mobile devices. The number of links that will be generated will depend on the interface you chose to run goshs on, if any.</description>
    </item>
    <item>
      <title>Collaboration / CTF</title>
      <link>https://docs.goshs.de/usage/collaboration/index.html</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://docs.goshs.de/usage/collaboration/index.html</guid>
      <description>goshs includes a set of server capabilities tailored for penetration testing, red team operations, and CTF challenges. These features let you receive and inspect traffic from targets — DNS queries, emails, SMB authentication attempts, and HTTP redirects — all from within the same binary.&#xA;SMB Server — capture NTLM hashes and optionally crack them against a wordlist DNS Server — log all incoming DNS lookups and reply with a configurable IP SMTP Server — receive emails and attachments sent to your server LDAP Server — capture bind credentials and NTLM hashes; JNDI mode for Log4Shell exploitation Redirect Endpoint — serve HTTP 3xx redirects with custom headers Reverse Shell Catcher &amp; Generator — catch and interact with reverse shells, generate payloads Domain setup To receive real-world DNS callbacks and emails you need a registered domain with a few DNS records in place. The setup below uses Namecheap as an example, but the record types are the same with any registrar.</description>
    </item>
    <item>
      <title>TUI Dashboard</title>
      <link>https://docs.goshs.de/usage/tui/index.html</link>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://docs.goshs.de/usage/tui/index.html</guid>
      <description>goshs ships with an optional interactive terminal dashboard built on Bubble Tea. Enable it with --tui and you get a live full-screen view of all server activity — no browser, no port-forwarding required. This is especially useful when running goshs headless over SSH.&#xA;goshs --tui goshs --tui -s -ss -b admin:secret --catcher -dns -dns-ip 10.10.14.5 Overview The TUI subscribes to the same WebSocket broadcast stream as the browser Collaboration tab, so every event that would appear in the web UI also appears in the terminal in real time. All 7 activity panes are available:</description>
    </item>
    <item>
      <title>TTL (Self-Destruct)</title>
      <link>https://docs.goshs.de/usage/ttl/index.html</link>
      <pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://docs.goshs.de/usage/ttl/index.html</guid>
      <description>The --ttl flag arms a self-destruct timer. When the duration elapses, goshs shuts down gracefully — exactly as if you had pressed Ctrl+C.&#xA;# Shut down automatically after 2 hours goshs --ttl 2h # Combined with other flags goshs -s -ss -b admin:secret --catcher --ttl 4h Duration syntax The flag accepts any Go duration string:</description>
    </item>
    <item>
      <title>Payload Templating</title>
      <link>https://docs.goshs.de/usage/templating/index.html</link>
      <pubDate>Tue, 23 Jun 2026 09:00:00 +0200</pubDate>
      <guid>https://docs.goshs.de/usage/templating/index.html</guid>
      <description>goshs can render placeholders inside served text files at download time, so you host a payload once and let goshs fill in your callback host and port instead of editing and re-uploading the file every time your interface or listener changes.&#xA;Templating is opt-in twice: it must be enabled with --template, and it only runs for a request that explicitly asks for it with the ?tpl query parameter. Every other request serves the file verbatim.</description>
    </item>
  </channel>
</rss>