This project is based on the great work from littlelinkIt takes the same simple approach to a link page and hosts it within a NodeJS server with React Server Side Rendering, containerized for you to use. Now, customizing LittleLink
with littlelink-server
is as easy as passing in some environment variables. If you need help configuring this, please see this video that explains everything and a live example at technotim.live.
Check the config file for all supported buttons!
See Getting Started with Analytics. After getting your GA Tracking Id, use your tracking Id as environment variable like GA_TRACKING_ID=G-XXXXXXXXXX
(See the example below)
All buttons clicked will be tracked automatically if GA_TRACKING_ID
exists.
Sample event for YouTube button.
window.gtag('event', 'youtube-button');
See Adding a website & Collecting data page to add and generate your tracking code.
Generated tracking code should look like:
<script async defer data-website-id="00000000-1111-2222-3333-444444444444" src="https://your-umami-app.com/umami.js"></script>
Use data-website-id
as environment variable UMAMI_WEBSITE_ID
and src
as UMAMI_APP_URL
.
Sample event for YouTube button.
window.umami('youtube-button');
A health check endpoint exists on /healthcheck
. If healthy, it will return with a 200
and the following response:
{
"status": "ok"
}
This container image is published on both GitHub Container Registry and DockerHub choose whichever one works for you. They will both be updated during CI.
docker-compose.yml
---
version: "3.0"
services:
littlelink-server:
image: ghcr.io/techno-tim/littlelink-server:latest
# dockerhub is also supported timothystewart6/littlelink-server
#image: timothystewart6/littlelink-server:latest
container_name: littlelink-server
environment:
- META_TITLE=Techno Tim
- META_DESCRIPTION=Techno Tim Link page
- META_AUTHOR=Techno Tim
- LANG=en
- META_INDEX_STATUS=all
- GA_TRACKING_ID=G-XXXXXXXXXX
- THEME=Dark
- FAVICON_URL=https://pbs.twimg.com/profile_images/1286144221217316864/qIAsKOpB_200x200.jpg
- AVATAR_URL=https://pbs.twimg.com/profile_images/1286144221217316864/qIAsKOpB_200x200.jpg
- AVATAR_2X_URL=https://pbs.twimg.com/profile_images/1286144221217316864/qIAsKOpB_400x400.jpg
- AVATAR_ALT=Techno Tim Profile Pic
- NAME=TechnoTim
- BIO=Hey! Just a place where you can connect with me!
- FOOTER=Thanks for stopping by!
- GITHUB=https://github.com/timothystewart6
- TWITTER=https://twitter.com/TechnoTimLive
- INSTAGRAM=https://www.instagram.com/techno.tim
- YOUTUBE=https://www.youtube.com/channel/UCOk-gHyjcWZNj3Br4oxwh0A
- TWITCH=https://www.twitch.tv/technotim/
- DISCORD=https://discord.gg/DJKexrJ
- TIKTOK=https://www.tiktok.com/@technotim
- KIT=https://kit.co/TechnoTim
- FACEBOOK=https://facebook.com
- FACEBOOK_MESSENGER=https://facebook.com
- LINKED_IN=https://linkedin.com
- PRODUCT_HUNT=https://www.producthunt.com/
- SNAPCHAT=https://www.snapchat.com/
- SPOTIFY=https://www.spotify.com/
- REDDIT=https://www.reddit.com/
- MEDIUM=https://medium.com
- PINTEREST=https://www.pinterest.com/
- EMAIL=you@example.com
- EMAIL_TEXT=Email Me!
- EMAIL_ALT=you@example.com
- EMAIL_ALT_TEXT=Email me!
- SOUND_CLOUD=https://soundcloud.com
- FIGMA=https://figma.com
- TELEGRAM=https://telegram.org/
- TUMBLR=https://www.tumblr.com/
- STEAM=https://steamcommunity.com/
- VIMEO=https://vimeo.com/
- WORDPRESS=https://wordpress.com/
- GOODREADS=https://www.goodreads.com/
- SKOOB=https://www.skoob.com.br/
- LETTERBOXD=https://letterboxd.com/
- MASTODON=https://mastodon.social/
- MICRO_BLOG=https://micro.blog/
- WHATSAPP=https://www.whatsapp.com/
- STRAVA=https://www.strava.com/
- BUYMEACOFFEE=https://www.buymeacoffee.com/
- GITLAB=https://www.gitlab.com/
- PATREON=https://www.patreon.com/technotim
- DEVTO=https://dev.to/
- UMAMI_WEBSITE_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
- UMAMI_APP_URL=https://your-umami-app.com
- BUTTON_ORDER=YOUTUBE,TWITCH,TWITTER,GITHUB,INSTAGRAM,DISCORD,FACEBOOK,TIKTOK,KIT,PATREON # use ENV variable names for order, listed buttons will be boosted to the top
- PAYPAL=https://www.paypal.me/user
- SLACK=https://slack.com/
ports:
- 8080:3000
restart: unless-stopped
security_opt:
- no-new-privileges:true
Docker command
docker run -d \
--name=littlelink-server \
-p 8080:3000 \
-e META_TITLE='Techno Tim' \
-e META_DESCRIPTION='Techno Tim Link page' \
-e META_AUTHOR='Techno Tim' \
-e LANG=en \
-e META_INDEX_STATUS='noindex' \
-e GA_TRACKING_ID='G-XXXXXXXXXX' \
-e THEME='Dark' \
-e FAVICON_URL='https://pbs.twimg.com/profile_images/1286144221217316864/qIAsKOpB_200x200.jpg' \
-e AVATAR_URL='https://pbs.twimg.com/profile_images/1286144221217316864/qIAsKOpB_200x200.jpg' \
-e AVATAR_2X_URL='https://pbs.twimg.com/profile_images/1286144221217316864/qIAsKOpB_400x400.jpg' \
-e AVATAR_ALT='Techno Tim Profile Pic' \
-e NAME='TechnoTim' \
-e BIO='Hey! Just a place where you can connect with me!' \
-e GITHUB='https://github.com/timothystewart6' \
-e TWITTER='https://twitter.com/TechnoTimLive' \
-e INSTAGRAM='https://www.instagram.com/techno.tim' \
-e YOUTUBE='https://www.youtube.com/channel/UCOk-gHyjcWZNj3Br4oxwh0A' \
-e TWITCH='https://www.twitch.tv/technotim' \
-e DISCORD='https://discord.gg/DJKexrJ' \
-e TIKTOK='https://www.tiktok.com/@technotim' \
-e KIT='https://kit.co/TechnoTim' \
-e EMAIL='someone@example.com' \
-e EMAIL_TEXT='Email me!' \
-e FOOTER=Thanks for stopping by! \
--restart unless-stopped \
ghcr.io/techno-tim/littlelink-server:latest
Unofficial helm chart provided by k8s-at-home
helm repo add k8s-at-home https://k8s-at-home.com/charts/
helm repo update
helm install littlelink-server \
--set env.TZ="America/New York" \
--set env.META_TITLE="TechnoTim"
k8s-at-home/littlelink-server
Or use a values.yaml files
helm install littlelink-server k8s-at-home/littlelink-server -f values.yaml
LittleLink is a lightweight DIY alternative to services like Linktreeand many.link. LittleLink was built using Skeleton, a dead simple, responsive boilerplate—we just stripped out some additional code you wouldn't need and added in branded styles for popular services.
LittleLink has more than 20 company button styles you can use and we'll be throwing more in soon. You'll also find a light and dark theme ready to go. Not a fan of the colors? Update skeleton-light.css
or skeleton-dark.css
to the HEX values of your choosing.
Using Skeleton let us build something that loads quickly & doesn't have any of the unnecessary bloat you would get from using a large framework for a page that requires nothing more than simplicity. LittleLink scored a 99/100 in performance when tested with Google Lighthouse.
-- ============================================= -- Author: 余波(杭州) -- Create date: 2011/09/26 -- Description: linked server连接sql server -- ======
问题内容: 我想将 DataDable 传递给 存储过程作为 以下各列的 参数 : 现在,我想在存储过程中使用此数据表,并要在其上声明一个游标。然后使用该光标将值顺序插入数据库表中。 请告诉我如何在存储过程中 声明datatable参数* ,然后在该 参数 上使用 游标 ? * 问题答案: 首先,您需要创建一个类型: 现在,您的存储过程可以将其声明为只读输入参数: 我不确定为什么要在这里使用游标,
问题内容: 好的,问题是需要在2个表上进行合并或联接。一个文件的内容存储为[image]类型或varbinary(max),另一个文件的内容存储为十六进制字符串。如果我将相同的内容上传到两个表中 内容为字符串(从bytearray到字符串)看起来像这样… 图像的内容看起来像(这最终就是我想要的样子) 如果我选择我得到 看起来转换似乎已达到目标,但在每个之间放置了两个零(00),由于缺少更好的字词,
问题内容: 我的SQL Reporting Services报表有问题。我为报表标题使用了自定义字体,并且在部署到服务器时,当我打印或导出为PDF /TIFF时,它无法正确呈现。我已经在服务器上安装了字体。为了使用自定义字体,我还有什么需要做的吗? 在浏览器中查看字体时,它看起来是正确的-因为所有客户端计算机都安装了字体… 感谢Ryan,您在FAQ上的帖子解决了该问题。在服务器上安装字体可以解决打
问题内容: 我正在尝试使用try-catch捕获SQL查询(而不是存储过程)中的错误。 由于某种原因,这无法处理我的错误,但我仍然得到: 消息213,级别16,状态1,第29行列名或提供的值数与表定义不匹配。 有什么帮助吗? 问题答案: 您有一个编译时错误,无法在try-catch中捕获。 BooksOnline: 编译和语句级重新编译错误 如果错误在与TRY-ATCH构造相同的执行级别中发生,则
问题内容: 我需要在数据库中填充纬度和经度列,但是原始信息存储为单个字符串 例如。 我猜想TRIM命令在这里很有用,但是我不知道如何告诉它每半个部分都精确地停在逗号上。 我希望能够提出一个简单的UPDATE查询,如下所示: 但是显然在LTRIM和RTRIM部分中需要做一些额外的工作,因此我只选择数据,但不包括UDFChar1中的逗号。 关于如何实现这一目标的任何想法? 问题答案: 请试试: 和 样
问题内容: 我的表(SQL Server 2008)拥有100万以上的记录,当我尝试按日期时间排序记录时,它需要1秒钟,但是当我按ID(int)排序时,它仅需要约0.1秒钟。 有什么办法可以提高效率吗?(我已经将datetime列添加到索引中了) 问题答案: 通过排序可能使用聚簇索引扫描,而通过排序或索引查找来排序。 这两种方法都比聚簇索引扫描慢。 如果您的表格是由集群的,则基本上意味着它已经被排