Linux Odyssey: 我們的旅程

Linux Odyssey 是我在北科大五專期間,與同學們合力開發的網頁專案。本文寫於 2024 年三月,當時剛得到 g0v 零時小學校首獎,介紹 Linux Odyssey 這個專案的背景,我們的開發歷程,使用者的推廣活動、參賽經驗,以及在當時的未來展望。

2025年10月12日 · 6 分鐘 · Justin LIn

Nginx 設定 SNI Routing 讓 Reverse Proxy Upstream 自己管理 SSL 憑證

我自己家中的 home lab 是用 Proxmox 安裝的 VM 環境,Proxmox 非常好用,然而有一點非常困擾我:由於我只有一個固定 IP,因此我的不同 domain 都要由同一台 VM 做 reverse proxy。平常這樣用起來沒什麼問題,然而在安裝某些服務,好比 Jitsi、Matrix 時,它會需要存取到 SSL 憑證,因此我得將它放在跟 reverse proxy 同一台 VM 上,否則 Jisti 會讀不到 certbot 產生的憑證。這一直造成我非常大的困擾,直到最近向朋友請教,認識到了 SNI Routing 這項技術。 ...

2022年9月5日 · 3 分鐘 · Justin LIn

自由的伺服器測速工具 LibreSpeed 安裝教學

自己架站有時候需要了解伺服器的網速實際上有多快,這時可以在伺服器上安裝 LibreSpeed 這套軟體,打開網頁就能測連線到伺服器的速度。LibreSpeed 有 PHP 和 Go 實作,身為 Gopher 當然要用 Go 實作!本篇將以 Go 實作為範例。 Go 安裝 首先要安裝 Go,到 Golang 官網 下載你平台的壓縮檔,Raspberry Pi 選 armv6l,一般電腦要選 amd64,然後將其解壓縮: ...

2021年8月10日 · 2 分鐘 · Justin LIn

從零開始的 Nextcloud 完整安裝教學

用兩顆外接硬碟組 RAID 1,設定 DDNS、Nginx,並安裝 Nextcloud,以及後續的 PHP 調校與 Redis 快取。

2021年8月7日 · 7 分鐘 · Justin LIn

elementary OS 啟用 System Tray

elementary OS 是一個好看、易用的 Linux 發行版,然而它有一個缺點:系統狀態欄(system tray)無法顯示其他應用程式的 icon,這導致像輸入法、Discord 等有使用 system tray 的程式無法使用完整功能。最討厭的莫過於 HP 印表機驅動 HPLIP,每次開機就跳出來說 no system tray deteched,非常煩人。 原因是 elementary OS 基本上不希望其他應用程式去使用 system tray,並且停止支援 Ayatana Indicator API,做出相同決定的還有 GNOME,參考 Status Icons and GNOME。 ...

2020年2月12日 · 1 分鐘 · Justin LIn

在 Raspberry Pi 安裝 Nextcloud

Nextcloud 是一套自由的雲端硬碟系統,可以讓你自己架設像 Google Drive、One Drive 一般的雲端硬碟,將資料掌握在自己手中,本篇紀錄如何在樹梅派安裝 Nextcloud。 安裝 到官方網站下載壓縮檔 sudo unzip -d /var/www nextcloud-18.0.0.zip sudo chown www-data:www-data /var/www/nextcloud PHP 安裝 PHP 依賴模組 sudo apt install php-gd php-json php-mysql php-curl php-mbstring php-intl php-imagick php-xml php-zip 參閱 官方文件 檢查依賴的 PHP 模組,或是擴充功能像是 smb、ldap 等等。 MySQL 建立 Nextcloud 的資料庫和使用者 $ sudo mysql > create database nextcloud; > create user 'nextcloud'@'localhost' identified by 'password'; > grant all privileges on nextcloud . * to 'nextcloud'@'localhost'; > flush privileges; Caddy 複製 Caddy 提供的 Nextcloud Caddyfile 到 /etc/caddy/Caddyfile,接著修改成你自己的域名、PHP 路徑。我的設定檔如下: ...

2020年2月11日 · 2 分鐘 · Justin LIn

Caddy 安裝教學

Caddy 是一個由 Go 撰寫的 Web Server,其主要賣點是簡單的設定檔,適合在開發環境中快速架設,還有自動 HTTPS 的功能,相當方便。 我之前在 Linode 上就使用 Caddy,覺得體驗相當好,因此這次也選擇使用它。 安裝 到 Caddy 網站的下載頁面,複製 One-step installer script 就可以一鍵安裝。 curl https://getcaddy.com | bash -s personal 如果是要拿來當開發環境中的 Web Server,這樣就足夠了,但我要讓它在背景執行,因此還需要設定好它的 systemd。 ...

2020年2月4日 · 1 分鐘 · Justin LIn

CloudFlare 設定 DDNS 教學

最近剛入手一個 Raspberry Pi,用來作為一個省電的伺服器,本來困擾自己家裡的固定 IP 已經給了其他台伺服器,但找到方法用 CloudFlare 實現 DDNS。 CloudFlare DDNS CloudFlare 本身沒有官方的 DDNS 支援,但可以用 CloudFlare API 實做,我找了一個別人做好的 CloudFlare-ddns,折騰一會兒就設定好了。 首先安裝 cloudflare-ddns 和其依賴,然後以我要設定 pi.wancat.cc 為例,建立 site_pi.yaml 設定檔,填入以下內容: %YAML 1.2 # CloudFlare DDNS updater script config. --- # CloudFlare API key # You can find this under Account > My account after logging into CloudFlare. cf_key: 'your key' # Email address for your CloudFlare account. cf_email: 'your email' # Domain you're using CloudFlare to manage. # If the host name you're updating is "ddns.domain.com", make this "domain.com". cf_domain: 'wancat.cc' # The subdomain you're using for your DDNS A record. # If the host name you're updating is "ddns.domain.com", make this "ddns". # However, if you're updating the A record for the naked domain (that is, just # "domain.com" without a subdomain), then set cf_subdomain to an empty value. cf_subdomain: 'pi' # CloudFlare service mode. This enables/disables CF's traffic acceleration. # Enabled (orange cloud) is 1. Disabled (grey cloud) is 0. cf_service_mode: 0 # If set to true, prints a message only when the record changes or when # there's an error. If set to 'false', prints a message every time even if # the record didn't change. quiet: false # If set to true then we call the ec2metadata service for the instance # public ip address rather than an external service. aws_use_ec2metadata: false # If set to true dig will be used to fetch the public IP which is better # but not available on all systems. use_dig: false 這邊的 cf_key 要到 CloudFlare 網站裡找,介紹是寫要用 Global API Key,我沒試過專門功能的 Key 行不行。執行 cloudflare-ddns.py 測試 ...

2020年2月4日 · 2 分鐘 · Justin LIn

Google Analytics 替代方案 Matomo 安裝教學

因為實在不想再讓 Google 拿到資料了,所以我到 No More Google 網站上找 Google Analytics 的替代方案,第一名就是 Matomo。 Matomo 是一個自架的流量分析程式,是自由軟體,也有提供付費的 Cloud hosting 服務。我在試用後覺得還不錯,就決定自行在 Raspberry Pi 上安裝。因為是自架的,所以資料都在自己手上,不會被 Google 拿去利用。 安裝方式參考官方文件。 環境需要 PHP、MySQL or MariaDB PHP 安裝: sudo apt-get install php7.0 php7.0-curl php7.0-gd php7.0-cli mysql-server php7.0-mysql php-xml php7.0-mbstring 資料庫我比較偏好社群維護的 MariaDB: ...

2020年2月4日 · 2 分鐘 · Justin LIn

Hugo 安裝 LikeCoin 教學

取代 Hexo 我使用 Hexo 作為靜態網站生成器已經一年半,然而它有些我越來越難忍受的缺點,加上認識了由 Go 寫成的 Hugo,我在使用 Hugo 建立了幾個網站作為練習後,決定將自己的部落格改到 Hugo。 Hexo 仍然是一套很棒的工具,我主要是覺得它每次執行都要等大約十秒的時間,讓我很不耐煩;另外它的 server 功能有些缺陷,有時候改變內容會讓它變成 Untitled Post,不過我也沒有很認真的想要解決就是了。 ...

2020年2月3日 · 3 分鐘 · Justin LIn