<?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/en/usage/index.html</link>
    <description>Usage is quite simple. Explanation of the specific features can be found in the submenu.&#xA;goshs v2.0.0 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) SFTP server options: -sftp Activate SFTP server capabilities (default: false) -sp, --sftp-port The port SFTP listens on (default: 2022) -skf, --sftp-keyfile Authorized_keys file for pubkey auth -shk, --sftp-host-keyfile SSH Host key file for 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 Disable zeroconf mDNS registration (default: false) -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</description>
    <generator>Hugo</generator>
    <language>en-US</language>
    <lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://docs.goshs.de/en/usage/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Basic usage</title>
      <link>https://docs.goshs.de/en/usage/basic/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:36:18 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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.&#xA;$ goshs -p 8080 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:8080 INFO [2024-07-04 18:01:46] Serving on interface eth0 bound to 10.137.0.27:8080 INFO [2024-07-04 18:01:46] Serving HTTP from /home/user IP You can choose to run it listening on a specific ip address or interface using -i.</description>
    </item>
    <item>
      <title>Config File</title>
      <link>https://docs.goshs.de/en/usage/config/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:36:18 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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.&#xA;{ &#34;interface&#34;: &#34;0.0.0.0&#34;, &#34;port&#34;: 8000, &#34;directory&#34;: &#34;.&#34;, &#34;upload_folder&#34;: &#34;.&#34;, &#34;ssl&#34;: false, &#34;self_signed&#34;: false, &#34;private_key&#34;: &#34;&#34;, &#34;certificate&#34;: &#34;&#34;, &#34;p12&#34;: &#34;&#34;, &#34;p12_no_pass&#34;: false, &#34;letsencrypt&#34;: false, &#34;letsencrypt_domain&#34;: &#34;&#34;, &#34;letsencrypt_email&#34;: &#34;&#34;, &#34;letsencrypt_http_port&#34;: &#34;80&#34;, &#34;letsencrypt_tls_port&#34;: &#34;443&#34;, &#34;auth_username&#34;: &#34;&#34;, &#34;auth_password&#34;: &#34;&#34;, &#34;certificate_auth&#34;: &#34;&#34;, &#34;webdav&#34;: false, &#34;webdav_port&#34;: 8001, &#34;upload_only&#34;: false, &#34;read_only&#34;: false, &#34;no_clipboard&#34;: false, &#34;no_delete&#34;: false, &#34;verbose&#34;: false, &#34;silent&#34;: false, &#34;invisible&#34;: false, &#34;running_user&#34;: &#34;&#34;, &#34;cli&#34;: false, &#34;embedded&#34;: false, &#34;output&#34;: &#34;&#34;, &#34;webhook_enabled&#34;: false, &#34;webhook_url&#34;: &#34;&#34;, &#34;webhook_provider&#34;: &#34;discord&#34;, &#34;webhook_events&#34;: [ &#34;all&#34; ], &#34;sftp&#34;: false, &#34;sftp_port&#34;: 2022, &#34;sftp_keyfile&#34;: &#34;&#34;, &#34;sftp_host_keyfile&#34;: &#34;&#34;, &#34;whitelist&#34;: &#34;&#34;, &#34;trusted_proxies&#34;: &#34;&#34;, &#34;tunnel&#34;: false, &#34;dns_server&#34;: false, &#34;dns_port&#34;: 8053, &#34;dns_ip&#34;: &#34;127.0.0.1&#34;, &#34;smtp_server&#34;: false, &#34;smtp_port&#34;: 2525, &#34;smtp_domain&#34;: &#34;&#34;, &#34;smb_server&#34;: false, &#34;smb_port&#34;: 445, &#34;smb_domain&#34;: &#34;&#34;, &#34;smb_share&#34;: &#34;&#34;, &#34;smb_wordlist&#34;: &#34;&#34; }Or you use the one here or you can even print and redirect one by running:</description>
    </item>
    <item>
      <title>File handling</title>
      <link>https://docs.goshs.de/en/usage/file-handling/index.html</link>
      <pubDate>Fri, 05 Jul 2024 09:10:41 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/authentication/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:57:29 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/tls/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/tunnel/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/restrictions/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:47 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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.&#xA;Block downloads (upload-only) You can also block the downloads and use goshs as a file dropping service by utilizing the upload only mode with -uo. Downloading files will not be possible anymore.</description>
    </item>
    <item>
      <title>Command Prompt</title>
      <link>https://docs.goshs.de/en/usage/command-prompt/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:30 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/webdav/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:00 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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>SFTP</title>
      <link>https://docs.goshs.de/en/usage/sftp/index.html</link>
      <pubDate>Thu, 04 Jul 2024 16:03:00 +0200</pubDate>
      <guid>https://docs.goshs.de/en/usage/sftp/index.html</guid>
      <description>How to use goshs as SFTP server You can use goshs to also provide the files using SFTP by using -sftp. The default SFTP port is 2022 and can be changed using -sp.&#xA;Authentication is required using SFTP. You can use either username and password authentication with the flag -b user:pass or you can use an authorized keys file with -skf &lt;file-path&gt;. The options can be used exclusively or together.</description>
    </item>
    <item>
      <title>Clipboard</title>
      <link>https://docs.goshs.de/en/usage/clipboard/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:57:29 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/embed/index.html</link>
      <pubDate>Thu, 04 Jul 2024 09:49:21 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/file-based-acls/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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/en/usage/webhook-notifications/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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, sftp, smb, dns, smtp, 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/en/usage/ip-whitelist/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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.1This 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/en/usage/sharelinks/index.html</link>
      <pubDate>Thu, 04 Jul 2024 15:42:45 +0200</pubDate>
      <guid>https://docs.goshs.de/en/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.</description>
    </item>
    <item>
      <title>Collaboration / CTF</title>
      <link>https://docs.goshs.de/en/usage/collaboration/index.html</link>
      <pubDate>Mon, 13 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://docs.goshs.de/en/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>
  </channel>
</rss>