自托管短链接服务Snapp

在这里插入图片描述

什么是 Snapp ?

Snapp 是一款自托管 URL 缩短服务。能轻松缩短链接。借助 Snapp 的自托管功能,您能拥有完全的控制权,并根据您的要求创建简洁、可共享的链接。

使用 Snapp,您可以个性化链接结尾、监控链接的点击次数,设置链接的到期日期以提供额外的安全性。

官方将安装分为了三种情况:

  • 方式一:简易安装,这种方式不推荐,可能会遇到 CORS 问题,也不适合群晖;
  • 方式二:http 协议安装,如果只是在局域网使用,建议这种方式;
  • 方式三:https 协议安装,如果在互联网使用,建议采用这种方式;

下面的三种安装方式,都基于方式二,而 docker cli 还提供了方式三

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 uraniadev ,选择第一个 uraniadev/snapp,双击直接下载

在这里插入图片描述

端口

本地端口不冲突就行,不确定的话可以用命令查一下

# 查看端口占用
netstat -tunlp | grep 端口号
本地端口容器端口
30823000

在这里插入图片描述

环境

可变
ORIGIN如果您遇到 CORS 问题,请务必设置 ORIGIN
PUBLIC_URL如果您遇到 CORS 问题,请务必设置 PUBLIC_URL
NODE_ENV不使用 HTTPS 协议的情况下进行自托管,请设置NODE_ENV=development

默认值如下

在这里插入图片描述

修改之后

在这里插入图片描述

命令行安装

如果你熟悉命令行,可能用 docker cli 更快捷

# 运行容器(http协议)
docker run -d \--restart unless-stopped \--name snapp \-p 3082:3000 \-e ORIGIN=http://192.168.0.197:3082 \-e PUBLIC_URL=http://192.168.0.197:3082 \-e NODE_ENV=development \uraniadev/snapp:latest# 运行容器(https协议)
docker run -d \--restart unless-stopped \--name snapp \-p 3082:3000 \-e ORIGIN=https://snapp.laosu.cf \-e PUBLIC_URL=https://snapp.laosu.cf \uraniadev/snapp:latest

也可以用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

version: '3'services:snapp:image: uraniadev/snapp:latestcontainer_name: snapprestart: unless-stoppedports:- 3082:3000environment:- ORIGIN=http://192.168.0.197:3082- PUBLIC_URL=http://192.168.0.197:3082- NODE_ENV=development

然后执行下面的命令

# 新建文件夹 snapp
mkdir -p /volume1/docker/snapp# 进入 snapp 目录
cd /volume1/docker/snapp# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d

运行

在浏览器中输入 http://群晖IP:3082 就能看到主界面

下拉能看到前面提到的三种安装方式,还有一些参数,例如:启用用户注册禁用主页使用 Docker 持久化数据库

在这里插入图片描述

从左侧菜单 Login 进入注册账号

在这里插入图片描述

登录成功后,就是 Dashboard

在这里插入图片描述

点右上角 Shorten an url 来测试一下,没有设置过期时间和密码

在这里插入图片描述

SAVE 之后会回到 Dashboard 首页

在这里插入图片描述

访问地址就是我们前面设置的 PUBLIC_URL + /~/ + SHORT CODE,也就是 http://192.168.0.197:3082/~/i0ydl

访问的次数,在 USAGES 中会有体现

在这里插入图片描述

参考文档

urania-dev/snapp: Yet Another Url Shortner. | A simple excercise to learn Svelte, Svelte5 Runes, and Tabler.
地址:https://github.com/urania-dev/snapp

Snapp.li | Self-hostable Short Url
地址:https://snapp.li/

Snapp | Selfhosted Url Shortner : selfhosted
地址:https://www.reddit.com/r/selfhosted/comments/18chpe4/snapp_selfhosted_url_shortner/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/442067.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ONLYOFFICE:兼顾协作与安全的开源办公套件

文章目录 前言ONLYOFFICE是什么?ONLYOFFICE的特点多人在线协同灵活集成安全可靠跨平台和设备扩展丰富 实操注册登录编写文档插件安装智谱CopilotDraw.io 新版强势功能显示协作者头像插件 UI 界面更新 总结 前言 随着数字化时代的到来,越来越多的文档处理…

永久删除 Elasticsearch 中的主节点

Elasticsearch 是一个开源分布式搜索和分析引擎,用于各种任务,例如全文搜索、日志分析和实时数据分析。 Elasticsearch 集群由一个或多个节点组成,每个节点可以具有多种角色,包括主节点(master node)、数据…

橱窗宝石 - 华为OD统一考试

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 橱窗里有一排宝石&#xff0c;不同的宝石对应不同的价格&#xff0c;宝石的价格标记为 gems[i],0<i<n, n gems.length 宝石可同时出售0个或多个&#xff…

uniapp微信小程序-分包

一、为什么要分包 微信小程序每个分包的大小是2M&#xff0c;总体积一共不能超过20M,当然你也可以提升启动速度&#xff0c;降低首次加载时间&#xff0c;模块化开发&#xff0c;按需加载&#xff0c;提高性能。 二、分包步骤 1.首先在 mainfest.json mp-weixin添加以下代码&a…

Java学习笔记(十一)——常用类

一、包装类 &#xff08;一&#xff09;包装类和基本数据类型的转换 ​编辑 &#xff08;二&#xff09;包装类型和String类型的相互转换 &#xff08;三&#xff09;Integer类和Character类的常用方法 二、String &#xff08;一&#xff09;创建String对象的两种方式 …

【正则表达式】获取html代码文本内所有<script>标签内容

文章目录 一. 背景二. 思路与过程1. 正则表达式中需要限定<script>开头与结尾2. 增加标签格式的限定3. 不限制<script>首尾的内部内容4. 中间的内容不能出现闭合的情况 三. 结果与代码四. 正则辅助工具 一. 背景 之前要对学生提交的html代码进行检查&#xff0c;在…

数字孪生智慧能源电力Web3D可视化云平台合集

前言 能源电力的经济发展是中国式现代化的强大动力&#xff0c;是经济社会发展的必要生产要素&#xff0c;电力成本变化直接关系到工业生产、交通运输、农业生产、居民生活等各个方面&#xff0c;合理、经济的能源成本能够促进社会用能服务水平提升、支撑区域产业发展&#xf…

AMiner平台简介

AMiner是由清华大学计算机科学与技术系教授唐杰率领团队建立的&#xff0c;具有完全自主知识产权的新一代科技情报分析与挖掘平台。&#xff08;摘自用户手册&#xff09; 按照惯例我们给出网址&#xff1a;https://www.aminer.cn 我们来一起探索一下相关板块及应用。 1.科研…

PHP面试问答总结持续更新...

问题与简答 PHP 篇 echo、print、print_r、var_dump 区别 echo和print是语言结构、print_r和var_dump是普通函数 echo&#xff1a;输出一个或多个字符串 print&#xff1a;输出字符串 print_r&#xff1a;打印关于变量的易于理解的信息 var_dump&#xff1a;打印关于变量的…

在充满未知变化的市场社会环境里,实现组织结构与管理方式的自我进化

一、教程描述 本套教程立足于充满变化的市场社会环境&#xff0c;以管理者的素养作为切入点&#xff0c;从组织创新的角度&#xff0c;剖析企业可持续发展的内核与共性&#xff0c;并且提供了一套完整的实践方法论&#xff0c;可以帮助管理者在环境变化中&#xff0c;搭建一个…

Python面向对象编程:探索代码的结构之美

文章目录 一、引言二、为什么学习面向对象编程2.1 提高代码的可维护性&#xff1a;通过封装、继承和多态实现模块化设计2.2 提升代码的复用性&#xff1a;通过类和对象的创建实现代码的重用 三、类和对象的基本概念3.1 类和对象的定义和关系&#xff1a;类是对象的模板&#xf…

Vue(十九):ElementUI 扩展实现树形结构表格组件的勾父选子、半勾选、过滤出半勾选节点功能

效果 原理分析 从后端获取数据后,判断当前节点是否勾选,从而判断是否勾选子节点勾选当前节点时,子节点均勾选全勾选与半勾选与不勾选的样式处理全勾选和全取消勾选的逻辑筛选出半勾选的节点定义变量 import {computed, nextTick, reactive, ref} from vue; import {tree} f…