Pages

Saturday, 14 September 2024

Glance:自托管的个人仪表板

 A self-hosted dashboard that puts all your feeds in one place。

Glance

InstallConfigurationPreconfigured pagesThemesDiscord

example homepage

Features

Various widgets

  • RSS feeds
  • Subreddit posts
  • Weather
  • Bookmarks
  • Hacker News
  • Lobsters
  • Latest YouTube videos from specific channels
  • Clock
  • Calendar
  • Stocks
  • iframe
  • Twitch channels & top games
  • GitHub releases
  • Repository overview
  • Site monitor
  • Search box

Themeable

multiple color schemes example

Optimized for mobile devices

mobile device previews

Fast and lightweight

  • Minimal JS, no bloated frameworks
  • Very few dependencies
  • Single, easily distributed <15mb binary and just as small docker container
  • All requests are parallelized, uncached pages usually load within ~1s (depending on internet speed and number of widgets)

Configuration

Checkout the configuration docs to learn more. A preconfigured page is also available to get you started quickly.

Installation

Caution

The project is under active development, expect things to break every once in a while.

Manual

Checkout the releases page for available binaries. You can place the binary inside /opt/glance/ and have it start with your server via a systemd service. To specify a different path for the config file use the --config option:

/opt/glance/glance --config /etc/glance.yml

Docker

Important

Make sure you have a valid glance.yml file in the same directory before running the container.

docker run -d -p 8080:8080 \
  -v ./glance.yml:/app/glance.yml \
  -v /etc/timezone:/etc/timezone:ro \
  -v /etc/localtime:/etc/localtime:ro \
  glanceapp/glance

Or if you prefer docker compose:

services:
  glance:
    image: glanceapp/glance
    volumes:
      - ./glance.yml:/app/glance.yml
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 8080:8080
    restart: unless-stopped

Building from source

Requirements: Go >= v1.22

To build:

go build -o build/glance .

To run:

go run .

Building Docker image

Build the image:

Make sure to replace "owner" with your name or organization.

docker build -t owner/glance:latest .

Push the image to your registry:

docker push owner/glance:latest
from https://github.com/glanceapp/glance/ 

-------------------------------------

 几个月前了解到Glance这个项目,一直都想找个时间好好折腾一下,当时就觉得这个程序很符合我平时的上网习惯,基本可以把我平时上网要看的东西都能整合在一个页面里面。

然后我就按自己的习惯搓了个配置文件,最终效果:

话不多说,开始部署:

apt -y update
apt -y install curl wget nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

准备目录新建compose文件:

mkdir -p /opt/glance && cd /opt/glance && nano docker-compose.yml

写入如下配置:

services:
  glance:
    image: glanceapp/glance
    restart: unless-stopped
    volumes:
      - ./glance.yml:/app/glance.yml
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 8081:8080

新建glance.yml配置文件:

nano glance.yml

我的配置如下:

theme:
  background-color: 225 14 15
  primary-color: 157 47 65
  contrast-multiplier: 1.1

pages:
  - name: Home
    columns:
      - size: small
        widgets:
          - type: clock
            hour-format: 24h
            timezones:
              - timezone: Etc/UTC
                label: MapleStory Game Time
              - timezone: Asia/Shanghai
                label: Shanghai
              - timezone: America/New_York
                label: New York

          - type: calendar

          - type: twitch-channels
            channels:
              - ereklo_game
              - niru
              - duky
              - scardor
              - isiinggunz
              - sacrix

          - type: twitch-top-games
            exclude:
              - just-chatting
              - pools-hot-tubs-and-beaches
              - music
              - art
              - asmr

      - size: full
        widgets:
          - type: search
            search-engine: google
            bangs:
              - title: YouTube
                shortcut: "!yt"
                url: https://www.youtube.com/results?search_query={QUERY}

          - type: monitor
            cache: 1m
            style: dynamic-columns-experimental
            title: Services
            sites:
              - title: Vaultwarden
                url: https://vaultwarden.example.com/
                icon: si:vaultwarden
              - title: ProxmoxVE
                url: https://pve.example.com:8006/
                icon: si:proxmox
                allow-insecure: true
              - title: WordPress
                url: https://mydomain.com
                icon: si:wordpress
              - title: Chevereto
                url: https://img.xxoo.zip/
                icon: si:coil

          - type: rss
            limit: 10
            collapse-after: 3
            cache: 3h
            style: detailed-list
            feeds:
              - url: https://mydomain.com/feed
                title: 荒岛

          - type: reddit
            subreddit: selfhosted
            style: horizontal-cards

          - type: reddit
            subreddit: China_irl
            style: horizontal-cards

          - type: videos
            channels:
              - UCBKDRq35-L8xev4O7ZqBeLg # wangzhian
              - UCiL5EGUQfROCmRokN2q1LCg # xumouren
              - UCIXOIjR2mp8tHz78DE0vj2A # xuxiaodong
              - UCcOCpJNG2hR0wohtBVdeshA # ms
            limit: 25
            collapse-after-rows: 2
            style: grid-cards

      - size: small
        widgets:
          - type: weather
            location: Wuhan, China

          - type: bookmarks
            groups:
              - links:
                  - title: Google
                    url: https://google.com/
                  - title: Github
                    url: https://github.com/
                  - title: Hostloc
                    url: https://hostloc.com/
                  - title: Nodeseek
                    url: https://www.nodeseek.com/
                  - title: Linuxdo
                    url: https://linux.do/
                  - title: V2ex
                    url: https://www.v2ex.com/
              - title: Entertainment
                color: 10 70 50
                links:
                  - title: Bilibli
                    url: https://www.bilibili.com/
                  - title: YouTube
                    url: https://www.youtube.com/
                  - title: Netflix
                    url: https://www.netflix.com/
                  - title: Disney+
                    url: https://www.disneyplus.com/
              - title: Social
                color: 200 50 50
                links:
                  - title: Reddit
                    url: https://www.reddit.com/
                  - title: Twitter
                    url: https://twitter.com/

          - type: releases
            repositories:
              - immich-app/immich
              - dani-garcia/vaultwarden
              - misskey-dev/misskey
              - SagerNet/sing-box
              - XTLS/Xray-core
              - stalwartlabs/mail-server
              - bitmagnet-io/bitmagnet
              - Paymenter/Paymenter
              - ConvoyPanel/panel

          - type: repository
            repository: stalwartlabs/mail-server
            pull-requests-limit: 5
            issues-limit: 3

简单介绍一下我这个配置:

1、时间这块我配置了一个UTC时间,因为我平时玩MapleStory,这个游戏里面的时间比北京时间晚8个小时,这样我就可以及时知道游戏内的活动到期时间、物品过期时间了,随时提醒我上线= =

2、关注了几个在Twitch玩MapleStory的游戏主播,我平时有事没事也会看看这几个人的直播,这样开播的时候我能第一时间看到。

玩GMS谁能不认识niru(全世界第一个300级的男人,睡着了都还在电脑前刷怪233)还有duky,这货也是搞笑,之前自己弄了个外挂出来可以卡已经被删除的轮回石碑效果,然后弄个小号在地图里面挂着,大号就在地图里面刷怪体验轮回效果,然后GM把他号BAN了还开直播装无辜= =

3、RSS这个没什么好说的,订阅自己喜欢的站点。这里只是演示,我就只订阅了我自己的这个博客。

4、Reddit我配置了selfhosted、china_irl,这是我平时最常逛的两个版块了。这里要注意的是,Reddit把很多机房(数据中心)的IP都拉黑了,如果你搭建Glance的机器无法访问Reddit就会有类似这样的报错:

我自己搭建的这台服务器就是IP被Reddit拉黑了,但是经过我的一番折腾已经完美解决了,步骤有点多,我会单独写一篇文章说明,这里先不说了。

5、Glance还支持关注Youtube的频道,我也是把自己常看的几个频道加进去了。配置的时候需要对应频道的ID,可以参考这里:https://github.com/glanceapp/glance/blob/main/docs/configuration.md#videos 获取。

6、天气这个也没什么好说的,只能说武汉这b天气真的可以热死人,太阳底下的车屁股温度可以达到80多度。。

7、书签功能,配置了几个我平时常看的网站。

8、关注了几个Github的存储库,可以把自己比较关注的项目配置上去,这样项目有任何更改,都能第一时间看到。卧槽,这功能简直绝了!

9、搜索功能,默认使用Google搜索,还支持使用短代码临时切换搜索,比如先输入!yt,然后再输入搜索词的话,那么就是在Youtube上搜索了。

10、服务可用性监控,可以把自建的服务配置上去,随时监测服务的健康状态。

更多配置,可以查看官方的文档:https://github.com/glanceapp/glance/blob/main/docs/configuration.md

总而言之就是Glance是一个高度可自定义的个人homepage。完全可以根据你的个人需求来自定义,达到一个百花齐放的效果。

启动:

docker compose up -d

配置NGINX反向代理:

nano /etc/nginx/sites-available/glacne

写入如下配置:

server {
    listen 80;
    listen [::]:80;
    server_name glance.example.com;

    location / {
        proxy_pass http://127.0.0.1:8081;
        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 "https";
        client_max_body_size 0;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/glance /etc/nginx/sites-enabled/glance

No comments:

Post a Comment