💾 Archived View for tilde.team › ~smokey › logs › 2022-05-24-duckling-guide.gmi captured on 2024-02-05 at 09:50:38. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2022-07-16)
-=-=-=-=-=-=-
This is a guide to help anyone who might want to set up a local duckling proxy. I was initially confused as to how to get it working or how to make a server certificate/key and puzzled things out. Here is a step-by-step of what I did, in as simple instructions as I can muster. I am on linux but shouldnt be much different on other systems. Good luck!
Acidus's Public Duckling Proxy
DuckDuckGo Input: A Simple CGI Script For Searching DDG In Your Client
Go
1. Open terminal
2. Run this command
ip addr | grep inet
A large block of text will be printed out. what you are looking for is a "INET 10.0.0.XXX" number after the default gateway (typically 127.0.0.1).
If you have a hard time finding this number, you can try the default gateway (127.0.0.1) in place of YOUR_IPV4. This didn't work for me but it might work for you (or so im told)
Very briefly stated, an internal IP is a kind of "network name" assigned to your computer by the router. Each computer connected to your network has an ip addressed to it. There are generally two kinds of IP your computer has, an internal and external.
The internal ip is the name your router gives it, typically a 10.0.0.XXX address. This is the local name all devices on your network use to refer to eachother. The external IP is the name the router assigns your computer for external connection from other networks. Its the name that computers outside your network refer to your computer as.
Since this is a local proxy running on the same computer as the gemini client, we are effectively telling the computer to connect to itself by pointing to its local IP address.
go run main.go -server -domain YOUR_IPV4
This will generate a pair of files named YOUR_IPV4.crt and YOUR_IPV4.key needed for Duckling Proxy to work.
go run duckling-proxy.go -c YOUR_IPV4.crt -k YOUR_IPV4.key -a YOUR_IPV4
At this point the duckling proxy program should be up and running, and print out the message
Info: Starting Duckling Proxy v0.2.1 on YOUR_IPV4 port: 1965
go run duckling-proxy.go: is self-explainitory -c YOUR_IPV4.crt: defines the /path/name to your crt file. No need for path if in same dir -k YOUR_IPV4.key: Same as -c but for the key file -a YOUR_IPV4: Binds the proxy to your computers local address
Duckling has several configurations that can be changed to suit your taste. For example, I like the option to have links to images if I want to view them by default. You can either set the -flag at startup or go into the code itself and change the default options. All flag options are listed down below in references. To edit the default values, open duckling-proxy.go file and go to line 26. From there change the true and false values as you see fit.
I am using lagrange, arguably the most popular GUI gemini client. If you are using some other client, refer to the supported clients list in references. For Lagrange:
Alright! Theoretically if all went well, we can try out a website. For best experience its better to stay with smol-orientated websites. How about:
https://solar.lowtechmagazine.com/
If you can reach it and see readable text without duckling-proxy crashing then that means we are done! Congratz, you are winnar.
Lets say for example that you have lagrange on your phone or another computer and would like duckling to work for those devices too. All you need to do is go through the same process in step 3 but for your device. Same host IPV4 and everything.
Keep in mind that this only works for devices on the same network. If you want to use your duckling service outside the local network like on your cell service, you need to port-forward 1695 in your router, and connect to it through your host external_IPV4:1965
duckling-proxy [flags] -a, --address string Bind to address (default "127.0.0.1") -m, --citationMarkers Use footnote style citation markers -s, --citationStart int Start citations from this index (default 1) -e, --emitImagesAsLinks Emit links to included images -l, --linkEmitFrequency int Emit gathered links through the document after this number of paragraphs (default 2) -T, --maxConnectTime int Max connect time (s) (default 5) -t, --maxDownloadTime int Max download time (s) (default 10) -n, --numberedLinks Number the links -p, --port int Server port (default 1965) -r, --prettyTables Pretty tables - works with most simple tables -c, --serverCert string serverCert path. -k, --serverKey string serverKey path. --unfiltered Do not filter text/html to text/gemini -u, --userAgent string User agent for HTTP requests -v, --version Find out what version of Duckling Proxy you're running
Supported clients The following clients support per-scheme proxies and can be configured to use Duckling proxy. Amfora - supports per scheme proxies since v1.5.0 AV-98 - Merge pull request #24 then use set http_proxy machine:port to access. diohsc - edit diohscrc config file gemget - use -p option GemiNaut - since 0.8.8, which also has its own native html to gemini conversion - update in settings Lagrange - set proxy in preferences (use 127.0.0.1:port, not localhost:port for localhost) Telescope - set proxy in the config file add: proxy "https" via "gemini://127.0.0.1:1965", and similarly for http