Coder Social home page Coder Social logo

okhanyu / minichat Goto Github PK

View Code? Open in Web Editor NEW
351.0 3.0 44.0 8.25 MB

Minichat,Go语言实现的极简、极轻、无痕、匿名的聊天工具。

Home Page: https://minichat.codings.net

License: MIT License

Dockerfile 0.07% Go 2.14% HTML 5.89% JavaScript 91.90%

minichat's Introduction

MiniChat

click to demo

MiniChat 是一款Go语言实现的极简、极轻、无痕匿名聊天工具,开发此程序的本意是用于自己平日与好友临时讨论敏感话题时使用,现开源共享,代码简陋,请多包涵。

如有兴致,还请赏个 github 的 Star .

特性

  • 无数据库、无多余组件、打包后镜像仅 16M
  • 支持自定义服务端口、支持单独配置后端服务 Server API
  • 良好的匿名特性、安全隐私特性,数据只在服务器内存中毫秒级短暂中转不留痕
  • 支持房间密码、后进房间不能观看之前记录等特性,非常安全
  • 只需随意填写用户昵称,无任何真实信息,非常安全
  • 所有人离开房间即销毁,非常安全
  • 简洁但用心的界面布局
  • 适配手机端、Web端

使用说明

🌟 其实只需要两步: 你输入地址进入,输入昵称,开始聊天 复制给别人地址,别人进入,输入昵称,开始聊天

  1. 进入页面,若地址栏未携带 room=xxx 的参数,将随机产生一个新房间
  2. 输入自己的昵称(随意),点击进入房间即可
  3. 将房间地址复制发送给其他小伙伴,小伙伴输入他自己的昵称(随意)后,将进入你的房间
  4. 开始愉快且无痕且私密的聊天
  5. 当所有房间内的人都离开后,房间会立刻销毁

部署方式

创建目录和配置文件

  1. 创建 minichat 目录并 cd 到该目录下
mkdir minichat
cd minichat
  1. 创建 config.yaml 配置文件
cat << EOF > ./minichat/config.yaml
port: 8080
server_url: ""
EOF

以下方式默认在 minichat 目录下操作

Docker compose 方式(推荐)

  1. 环境要求: Docker、Docker-Compose
  2. 创建目录并下载 docker-compose.yaml:
wget https://raw.githubusercontent.com/okhanyu/minichat/master/docker-compose.yml
  1. 修改 docker-compose.yml 文件,按需修改端口号(只需修改 docker-compose.yml 文件中 - "8080:8080" 中前面的8080即可,后面的 8080 代表容器内的端口要和 config.yaml 中的端口一致,后面默认 8080 即可无需修改)
  2. 如有特殊需要,修改 config.yaml 文件,页面请求服务器的接口地址 server_url,如页面和服务使用同域名同端口,server_url 留空无需修改即可
  3. 进入刚 clone 的 minichat 文件夹,执行
docker-compose up -d
  1. 部署成功后,通过ip+端口号访问

Docker run 方式

  1. 环境要求: Docker
  2. 如有特殊需要,修改 config.yaml 文件,修改页面请求服务器的接口地址 server_url,如页面和服务使用同域名同端口,server_url 留空无需修改即可
  3. 执行(只需修改 -p 8080:8080 中前面的 8080 即可,后面的 8080 代表容器内的端口,要和 config.yaml 中的端口一致,后面默认 8080 即可无需修改)
docker pull okhanyu/minichat:latest
docker run -d --name minichattest --restart always \
  -p 8080:8080 \
  -v ./config.yaml:/app/config.yaml \
  -e TEMPLATE_NAME="bulma" \
  okhanyu/minichat:latest
  1. 部署成功后,通过ip+端口号访问

二进制直接运行 方式(无需 Docker)

  1. 环境要求: 无
  2. minichat 文件夹内创建文件 config.yaml
  3. 修改 config.yaml 文件,按需修改端口号和页面请求服务器的接口地址 server_url,如页面和服务使用同域名同端口,server_url 留空即可
port: 8080
server_url: ""
  1. minichat 文件夹内,放置下载并解压好的可执行文件,保证 config.yaml 和 可执行文件在同目录下,双击打开可执行文件即可
  2. 成功后,通过ip+端口号访问

环境变量

  • TEMPLATE_NAME 页面模板,支持 bulma | ddiu,默认使用 bulma

其他

  • 如果你需要的是一套支持自部署的完整、强大聊天室系统,请使用 mattermost.com
  • 如果你需要的是一款支持自部署的复古、匿名聊天室系统,请使用 hack.chat

模板作者


minichat's People

Contributors

okhanyu avatar alanoy avatar

Stargazers

 avatar  avatar daifiyum avatar Cattle_Horse avatar GEEKCX avatar cs8425 avatar  avatar LIU JIACHENG avatar Koulerz avatar  avatar Elpics avatar  avatar chendaye avatar  avatar  avatar  avatar  avatar OsbornZ avatar 一个人丶99 avatar  avatar  avatar  avatar Nexseer avatar  avatar  avatar  avatar James Blanda avatar  avatar 1900 avatar db_mu avatar 梦痕 avatar Versun avatar  avatar Frank avatar  avatar  avatar Sakurasan avatar  avatar  avatar 杨中超 avatar Danyell Bahringer avatar 麦田上の雲雀 avatar  avatar  avatar Ocean avatar  avatar  avatar  avatar yuju avatar Liu Yang avatar asnidea avatar gdyan avatar Connor avatar  avatar  avatar Jonny avatar AIains avatar haigeno1 avatar An avatar  avatar  avatar BESTRUI avatar  avatar Piu avatar Watish avatar Pixlv avatar  avatar  avatar Cookpro avatar  avatar  avatar  avatar thecity avatar  avatar  avatar  avatar kaniel avatar Ziyun.Lin avatar  avatar  avatar aURORA_JC avatar Narwhrl. avatar  avatar 葉鲜森(KEVI_) avatar  avatar  avatar Xoc avatar  avatar Yanzai avatar Madun avatar Remove it avatar AlisaCat avatar  avatar  avatar 山城潇洒哥 avatar agostop avatar  avatar Mingyu avatar  avatar checo avatar

Watchers

Mr.Dong avatar  avatar  avatar

minichat's Issues

是否可以增加文件传送功能

内网用着挺好的,有一点常用需求不知后续是否考虑:

  1. golang编译版本建议采用1.21以下以保持最大化系统兼容;(目前默认编译是1.22,win7无法运行)
  2. 文件或图片互传是聊天中很常见的需求,未知后续是否能够考虑(目前互传文件只能发邮件,很快占满邮箱容量极不方便,这个临时聊天室如果可以发文件就太方便了随用随走)

访问问题

大佬你好,我想问一下为啥我不在国内的服务器上面部署只有,只有开启了服务器这个科学上网节点才可以正常访问到这个项目,而其他节点都不可以

[ Request ] 关于 头像、昵称、气泡 的建议

Shot 2024-06-21 at 15 34 14@2x

1、 去掉头像(匿名聊天头像也是不重要的)
2、昵称使用不同颜色来区分
3、对话气泡纯粹一点

图片的代码

import React from 'react';

const AnonymousChatUI = () => {
  const users = {
    'Alice': 'text-blue-600',
    'Bob': 'text-green-600',
    'Charlie': 'text-purple-600',
    'Diana': 'text-red-600'
  };

  const messages = [
    { id: 1, sender: 'Alice', content: '大家好!我们来讨论一下今天的话题吧。', time: '10:00' },
    { id: 2, sender: 'Bob', content: '好的,你想讨论什么?', time: '10:02' },
    { id: 3, sender: 'Charlie', content: '我们可以谈谈最近的新闻事件。', time: '10:05' },
    { id: 4, sender: 'Diana', content: '听起来不错,我最近看到了一篇关于人工智能的有趣文章。', time: '10:07' },
    { id: 5, sender: 'Alice', content: '人工智能确实是个热门话题,你们怎么看待它对未来的影响?', time: '10:10' },
  ];

  return (
    <div className="flex flex-col h-screen bg-gray-100">
      {/* 在线用户列表 */}
      <div className="bg-white p-2 text-xs text-gray-500 border-b border-gray-200">
        在线用户:Alice, Bob, Charlie, Diana
      </div>

      {/* 聊天记录 */}
      <div className="flex-1 overflow-y-auto p-4">
        {messages.map((message) => (
          <div key={message.id} className={`mb-4 flex ${message.sender === 'Alice' ? 'justify-end' : 'justify-start'}`}>
            <div className={`max-w-[70%] flex flex-col ${message.sender === 'Alice' ? 'items-end' : 'items-start'}`}>
              <div className={`font-semibold mb-1 ${users[message.sender]}`}>
                {message.sender}
              </div>
              <div className={`rounded-lg p-3 ${
                message.sender === 'Alice' ? 'bg-blue-100' : 'bg-gray-200'
              }`}>
                <p className="text-gray-800">{message.content}</p>
              </div>
            </div>
          </div>
        ))}
      </div>

      {/* 输入框 */}
      <div className="bg-white border-t border-gray-200 p-4">
        <div className="flex items-center">
          <input
            type="text"
            placeholder="输入消息..."
            className="flex-1 bg-gray-100 border border-gray-300 rounded-full py-2 px-4 mr-2 focus:outline-none focus:ring-2 focus:ring-blue-500"
          />
        </div>
      </div>
    </div>
  );
};

export default AnonymousChatUI;

[ Request ] 国际化

Shot 2024-06-21 at 15 39 59@2x
发现现在界面是中英文混搭,不太好
建议应该在项目初期就开始做国际化

是否可以新增不依赖docker的部署方式

1、新人不懂docker,服务器环境也存在其他项目,不希望使用docker,是否可以提供其他的部署方式教程。叩谢~
2、我使用的时候,似乎自己发送的文字也展示在左侧,这似乎跟常用的微信展示方式不一致,是否可以改为,自己发的左侧,他人发的在右侧
3、非常有创意,也非常简洁的设计,轻量级,牛逼,期待可以部署尝试一下~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.