meanTorrent is A Private BitTorrent Tracker CMS with Multilingual support and a full-stack JavaScript open-source solution, which provides a solid starting point for MongoDB, Node.js, Express, and AngularJS based applications.
admin
role.Before you begin we recommend you read about the basic building blocks that assemble a meanTorrent application:
Make sure you have installed all of the following prerequisites on your development machine:
$ npm install -g bower
There are several ways you can get the meanTorrent boilerplate:
The recommended way to get meanTorrent is to use git to directly clone the meanTorrent repository:
$ git clone https://github.com/taobataoma/meanTorrent.git
This will clone the latest version of the meanTorrent repository to a meanTorrent folder.
Another way to use the MEAN.JS boilerplate is to download a zip copy from the master branch on GitHub. You can also do this using the wget
command:
$ wget https://github.com/taobataoma/meanTorrent/archive/master.zip -O meanTorrent.zip; unzip meanTorrent.zip; rm meanTorrent.zip
Don't forget to rename meanTorrent-master after your project name.
Once you've downloaded the boilerplate and installed all the prerequisites, you're just a few steps away from starting to develop your meanTorrent application.
The boilerplate comes pre-bundled with a package.json
and bower.json
files that contain the list of modules you need to start your application.
To install the dependencies, run this in the application folder from the command-line:
$ npm install
This command does a few things:
npm update
If install process show error info below:
../node-icu-charset-detector.cpp:7:28: fatal error: unicode/ucsdet.h: No such file or directory
then run this command to install libicu manual
apt-get install libicu-dev
OR yum install libicu-devel
Run your application using npm:
$ npm start
Your application should run on port 3000 with the development environment configuration, so in your browser just go to http://localhost:3000
That's it! Your application should be running. To proceed with your development, check the other sections in this documentation. If you encounter any problems, try the Troubleshooting section.
Explore config/env/development.js
for development environment configuration options.
To run your application with production environment configuration:
$ npm run start:prod
Explore config/env/production.js
for production environment configuration options.
Application will start by default with secure configuration (SSL mode) turned on and listen on port 8443. To run your application in a secure manner you'll need to use OpenSSL and generate a set of self-signed certificates. Unix-based users can use the following command:
$ npm run generate-ssl-certs
Windows users can follow instructions found here. After you've generated the key and certificate, place them in the config/sslcerts folder.
Finally, execute prod task npm run start:prod
secure
option in config/env/production.js
Before you to start the meanTorrent application, Please explore config/env/torrent.js
for many environment configuration options, you can change all configuration items of you Caring,
such as:
announce: {
url: 'http://mean.im/announce',
announcePrefix: '[mean.im].',
admin: 'admin@mean.im',
baseUrl: 'http://mean.im',
clientBlackListUrl: '/about/black'
},
meanTorrent tracker is private, please set the announce.url
to your server url, then when user to upload torrent file, It will autocheck the torrent announce url whether matching as announce.url
.
tmdbConfig: {
//please change it to your api key from themoviedb.org
key: 'key from themoviedb.org',
},
Because meanTorrent autoload the movie info from TMDB, so please to register yourself key and replace it to tmdbConfig.key
.
language: [
{name: 'en', index: 0, class: 'flag-icon-gb', title: 'English'},
{name: 'zh', index: 1, class: 'flag-icon-cn', title: '中文'}
],
Multilingual support, if you add a new translate string file, please add configuration here. The name
is value of ISO_639-1,
The class is used origin flag-icon-css, you can find flag icon at /public/lib/flag-icon-css/flags/
.
clientBlackList: [
{name: 'Transmission/2.93'},
{name: 'Mozilla'},
{name: 'AppleWebKit'},
{name: 'Safari'},
{name: 'Chrome'}
],
This is a client Black List, all the list client can not connect to the tracker server, you can add more if you unlike some client to connect. And you can make a list page to tell users witch clients are unpopular.
sign: {
openSignup: true,
signUpActiveTokenExpires: 60 * 60 * 1000 * 24,
allowSocialSignin: true,
showMenuHeaderForGuest, true
},
invite: {
openInvite: true,
scoreExchange: 10000,
expires: 60 * 60 * 1000 * 24
},
If your site do not accept user free register, please set openSignup
to false
, then user only can register through friend invitation or system(admin/oper) invitation.
if you set openInvite
to true
, the normal user can invite friends to join, if false
only oper/admin can invite users.
All the sign up account need verify & active by mail, and must completed within the set time signUpActiveTokenExpires
.
showMenuHeaderForGuest
is setting whether show menu header for guest user, if you do not want the menu header showing for guest, please set to false
.
ircAnnounce: {
enable: true,
debug: false,
server: 'irc.mean.im',
port: 16667,
nick: 'meanAnnouncer',
userName: 'meanTorrent',
realName: 'IRC announce client',
channel: '#meanAnnounce',
showErrors: true,
autoRejoin: true,
autoConnect: true,
retryCount: 86400,
retryDelay: 5000,
encoding: 'UTF-8'
},
Now, IRC announce support Node-irc, this function can be used on rtorrent client, if match some words, the download client can add the torrent into download task list automatic.
app: {
showDemoWarningPopup: true
showDebugLog: true
},
sign: {
showDemoSignMessage: true
},
If you started meanTorrent at production
env, please set showDemoWarningPopup
and showDemoSignMessage
to false
, this will not show demo message any where.
and you can set showDebugLog
to false
, then the console.log
info is not output.
hitAndRun: {
condition: {
seedTime: 24 * 60 * 60 * 1000 * 7,
ratio: 1.5
},
forbiddenDownloadMinWarningNumber: 3,
scoreToRemoveWarning: 10000
},
meanTorrent support complete HnR(hit and run) system, if user download a HnR torrent, then must seeding days of contition.seedTime
or
the upload ratio more than contition.ratio
, otherwise, the user will get a HnR warning, if the warning numbers is more than forbiddenDownloadMinWarningNumber
,
then the user can not download any torrent. but can continue the warning torrent and seed it until the warning disappears,
and the user can remove a warning by score number of scoreToRemoveWarning
or donate a VIP qualifications.
backup: {
enable: true,
dir: './modules/backup/client/backup/'
}
meanTorrent can backup mongo database into to a .tar files automatic at midnight everyday, and Admin/Oper can manage or download these files.
if you want to disabled this feature, please set enable
to false
, dir
is the saved path.
meanTorrent need send mail to user when restore password, send invitations etc. before send these mail, you need change the mail options in file config/env/development.js
and config/env/production.js
,
meanTorrent used module nodemailer
, if you have any config question you can find at nodemailer.
mailer: {
from: process.env.MAILER_FROM || 'admin@domain.com',
options: {
service: process.env.MAILER_SERVICE_PROVIDER || 'Gmail',
imap: process.env.MAILER_IMAP || 'imap.gmail.com',
auth: {
user: process.env.MAILER_EMAIL_ID || 'username@gmail.com',
pass: process.env.MAILER_PASSWORD || 'mailpassword'
}
}
},
Copy a translate string original file from modules/core/client/app/trans-string-en.js
to your want named file, such as 'trans-string-fr.js', and then translate all the strings.
Add new language configure item in config/env/torrent.js
.
language: [
{name: 'en', index: 0, class: 'flag-icon-gb', title: 'English'},
{name: 'zh', index: 1, class: 'flag-icon-cn', title: '中文'},
{name: 'fr', index: 2, class: 'flag-icon-fr', title: 'Français'} // this is added new language configure
],
Note: the name
is value of ISO_639-1,
The class is used origin flag-icon-css,
you can find flag icon at /public/lib/flag-icon-css/flags/
.
Copy and translate all the .md files in modules/*/client/templates/*.md
, notice the naming rules of files please, these files can edit online now.
meanTorrent used richtext box of bootstrap-markdown, It has already translated some
language, you can find them at /public/lib/bootstrap-markdown/locale/
, then inset into config file /config/assets/default.js
and /config/assets/production.js
, such as:
//bootstrap-markdown
'public/lib/bootstrap-markdown/js/bootstrap-markdown.js',
'public/lib/bootstrap-markdown/locale/bootstrap-markdown.zh.js',
'public/lib/bootstrap-markdown/locale/bootstrap-markdown.fr.js', // this is added new line
Note: If you can not find you wanted language file, you can copy and translate and config it.
Restart meanTorrent.
By clicking the button below you can signup for Heroku and deploy a working copy of meanTorrent to the cloud without having to do the steps above.
To save the profile images to S3, simply set those environment variables:
UPLOADS_STORAGE: s3
S3_BUCKET: the name of the bucket where the images will be saved
S3_ACCESS_KEY_ID: Your S3 access key
S3_SECRET_ACCESS_KEY: Your S3 access key password