Eka xihloko lexi, ndzi ta va ndzi ku komba ndlela yo tirhisa GoTTH stack (Go Templ htmx tailwind) eka vuhumelerisi.
Sweswinyana ndzi tumbuluxe xihlanganisi xa mina xa ku cincana ka mali ya crypto lexi vuriwaka cyphergoat ; yi ku kuma mpimo lowunene wo cincana crypto ya wena ku suka eka ku cincana ko hambana loku tirhisanaka.
Ri na swiphemu swimbirhi:
API leyi tirhisanaka na ku cincana. Yi tsariwile hi go naswona yi tirhisa gin.
Web UI yi tsariwile hi go naswona yi tirhisa nkatsakanyo wa HTML, HTMX, tailwindcss, CSS, na Javascript eka tithempleyiti ta templ. Aka xithaki xa GoTTH. Yi tirhisana na API leswaku yi ta kuma ti rates etc.
Lexi xi tsakisaka ngopfu hi stack na setup leyi hileswaku hi kota ku humesa binary yin’we leyi nga na hinkwaswo leswi katsekaka eka xiphemu xin’wana na xin’wana ivi hi yi rhumela eka server. Eka tlhelo ra webui, leswi swa koteka tani hi leswi HTML yi hlengeletiweke eka go code hi ku tirhisa templ ivi yi rhumeriwa na binary.
Eka xihloko lexi, ndzi ta va ndzi ri karhi ndzi hundza eka setup ya mina ku mi olovela ku endla nchumu wo fana na lowu.
Ndzi tirhisa sevha ya Debian 12 leyi nga ta paluxa xitirhisiwa xa mina hi ku tirhisa tithanele ta Cloudflare. Hinkwaswo swa tifayela leti nga cinciki ti tirhisiwa hi ku tirhisa nginx naswona ti-binary ta API na webusayiti ti fambisiwa tanihi vukorhokeri bya systemd.
Eka nkongomiso lowu, ndzi ta mi komba ndlela leyi ndzi swi vekeke ha yona leswi.
Ndzi na folda yin’we eka muchini wa mina wa dev leyi vuriwaka cyphergoat: Yi na:
api/ web/ builds/
Folda ya API yi na khodi ya xihlovo ya API. Webu yi na khodi ya xihlovo ya webusayiti.
Naswona ti builds ti tshama ti build hinkwato leti ti deployed eka server.
Ntlhontlho wo sungula wa xiviri wu ta hi ku veka tailwindcss hi ndlela leyinene.
Eka phurojeke ya mina ya webu, ndzi na folda ya static hi ku kongoma ya tifayela ta static. Endzeni ka yona, ndzi ni tifayela timbirhi:
/web styles.css tailwind.css
styles.css
yi na ntsena:
@import "tailwindcss";
Fayili ya tailwind.css hi laha tailwind-cli yi nga ta hlayisa swilo swa yona.
Ku aka swilo swa tailwind, ndzi tsutsuma ntsena:
npx @tailwindcss/cli -i ./static/styles.css -o ./static/tailwind.css --watch
(hi ku ehleketa leswaku u nghenise tailwind-cli)
Eka fayili ya mina ya header.templ (nhloko ya matluka hinkwawo), ehenhla ndzi na:
<link href="/static/tailwind.css" rel="stylesheet"> <link href="/static/styles.css" rel="stylesheet">
Naswona tifayela ti tirhisiwa hi ku tirhisa e.Static ya Echo (eka fayili ya mina ya main.go).
func main(){ e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.Use(middleware.Secure()) e.Static("/static", "static") // Serves content from static folder. // Rest of the handlers }
Eka tlhelo ra mina ra server, ndzi na Debian 12 vm leyi tirhaka eka proxmox.
Eka xikombo xa mina xa le kaya xa vatirhisi, ndzi na folda leyi nga na leswi landzelaka:
cyphergoat/ ├── api ├── static/ └── web
Folda ya static yi na tifayela hinkwato ta static (ku katsa na tailwind.css na styles.css), naswona webu na API i ti binary.
Ndzi tlhela ndzi va na vukorhokeri byimbirhi bya systemd bya ti executables leti:
Vukorhokeri bya cg-api.service
/etc/systemd/system/cg-api.service
[Unit] Description=CypherGoat API After=network.target [Service] User=arkal Group=www-data WorkingDirectory=/home/arkal/cyphergoat ExecStart=/home/arkal/cyphergoat/api Restart=always RestartSec=1 [Install] WantedBy=multi-user.target
Na cg-web.service
/etc /etc/systemd/system/cg-web.service
/system/cg-vukorhokeri bya web
[Unit] Description=CypherGoat Web After=network.target [Service] User=arkal Group=www-data WorkingDirectory=/home/arkal/cyphergoat ExecStart=/home/arkal/cyphergoat/web [Install] WantedBy=multi-user.target
Havumbirhi bya tona ti lawuriwa hi ntlawa wa www-data
(leswi kumbexana a swi bohi eka API) leswaku swi olova ku swi tirhela hi ku tirhisa nginx.
Website yi vulavurisana na API, kambe ndza ha lava ku endla leswaku web-ui yi fikeleleka.
Ndzi vekile sayiti ya nginx leyi nga na vukorhokeri lebyi landzelaka: /etc/nginx/sites-available/cg
server { server_name cyphergoat.com; location / { proxy_pass http://127.0.0.1:4200; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } location /static/ { alias /var/www/static/; expires 30d; } # Optional robots.txt location = /robots.txt { root /var/www/static; access_log off; log_not_found off; } listen 80; }
Ndzi tlhele ndzi veka certbot leswaku yi va na SSL cert.
U nga veka certbot hi ku tirhisa:
sudo apt install certbot python3-certbot-nginx -y
Endla xitifikheti xa SSL:
sudo certbot --nginx -d cyphergoat.com
Hlaya Self host website ya wena ku kuma setup ya nginx leyi dzikeke swinene.
Sweswi ndzi endla leswaku webusayiti ya mina yi fikeleleka hi ku tirhisa matluka ya Cloudflare. I xitshunxo xo olova swinene ku xi tirhisa xa port-forwarding.
Ku endla leswi, u ta lava akhawunti ya Cloudflare na domain leyi kongomisiweke eka Cloudflare.
Xo sungula, kongoma eka Zero Trust Dashboard .
Ehansi ka Networks
click eka Tunnels,
kutani Create a tunnel.
Loko se yi endliwile, u fanele Install and run a connector
; landzela swiletelo leswi nga eka tluka eka xiyimiso xa wena xo karhi.
Endzhaku ka loko xihlanganisi xi tirhile, u fanele ku tikhoma eka thebhu ya Public Hostname
ivi Add a public hostname
.
Sweswi, u fanele u vona nchumu wo fana ni lowu:
Tata info tani hi leswi ndzi nga na yona. Muxaka wa vukorhokeri wu fanele ku va HTTP
, naswona URL yi fanele ku va 127.0.0.1:80
kumbe localhost:80.
Swi le rivaleni leswaku a ku na xivangelo xo endla leswaku API ya wena yi fikeleleka erivaleni loko u tirhisa webusayiti ya wena.
Leswaku ndzi tirhisa ti binaries ta mina, ndzi ye emahlweni ndzi endla script ya bash ya xihatla:
cd api go build -o ../builds/ . cd ../web templ generate && go build -o ../builds/web cmd/main.go cd .. rsync -urvP ./builds/ user@SERVER:/home/user/cyphergoat rsync -urvP ./web/static user@SERVER:/home/user/cyphergoat/ rsync -urvP ./api/coins.json user@SERVER:/user/user/cyphergoat/
Skripti yi ta aka API, yi tumbuluxa tifayela ta templ yi aka WebUI, ivi yi rhumela hinkwaswo eka sevha ya mina (ku katsa na folda ya static).
Ndzi tlhela ndzi ssh eka sevha ya mina:
ssh user@ip
Naswona u tlhela u sungula vukorhokeri.
sudo systemctl restart cg-api cg-web
Nakona hi swona.
Ku ringaniseriwa ka mpimo wo olova eka Go (Gin) .
Ndlela yo aka xifunengeto xa URL eka Go
Ndlela yo tirhisa Django eka vuhumelerisi
© 2025 4rkal CC BY-SA XITLHOKOVETSELO