Compare commits
2565 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 0c25d277ef | |||
| 27b0348e1d | |||
| ea5aa68769 | |||
| 99fefb168a | |||
| 49457505cd | |||
| bfc948a9b4 | |||
| c407206627 | |||
| 39d3bf97d1 | |||
| c8e193e70d | |||
| 35859ffc3f | |||
| 0d81ada5a8 | |||
| b68cf0fb45 | |||
| 9ed2078e92 | |||
| 1f002159e2 | |||
| 5bc690fcd9 | |||
| bab9adce24 | |||
| e47eddaa85 | |||
| 8ef1f2e395 | |||
| 7626eecbf6 | |||
| 49afa75929 | |||
| 5c5265ede2 | |||
| 42d61d8089 | |||
| 01eb50078e | |||
| eef021f472 | |||
| 6f3fd785e7 | |||
| 7cd8a645a8 | |||
| 9671348dc1 | |||
| 7a3e68d656 | |||
| 42c7ec2f75 | |||
| 32c3ce5c98 | |||
| e55a3a82fc | |||
| 305da86f97 | |||
| c23d1d11b5 | |||
| a3cabd5f36 | |||
| 66ac4716f2 | |||
| 3cd1aaeb03 | |||
| 4eb940ffe7 | |||
| 61800b23e2 | |||
| 0283662931 | |||
| 8387fe0d5b | |||
| b91548eef4 | |||
| 1195417b97 | |||
| 8c2dfa9140 | |||
| a3fbfe0bff | |||
| e7e54bc19e | |||
| 9fb980599f | |||
| 9642df2d9d | |||
| 8919a3937a | |||
| 5032030f8d | |||
| b30cb5d7dc | |||
| 7113c4622b | |||
| bd8caff0b7 | |||
| 519bf3184a | |||
| 79c77ce3a3 | |||
| 2f40f795ee | |||
| 02f89a9c9d | |||
| d286c040a5 | |||
| 99f5b8ebc1 | |||
| 9ac33f9b9b | |||
| 6ab1fcaf89 | |||
| 8d57063e9d | |||
| 104d646c7c | |||
| 9ddbf79d9e | |||
| a9ec4c5c28 | |||
| 914d860197 | |||
| 23b3e5c731 | |||
| cdf04c2402 | |||
| 3535e44337 | |||
| 0b245d3885 | |||
| 4fda6cbcde | |||
| 2bbba897ec | |||
| 0cfb94b0ba | |||
| 3f7ac93932 | |||
| 96c36b4f6a | |||
| febd6d32cf | |||
| cbd8699801 | |||
| 74400aacc6 | |||
| 9f55c3605a | |||
| 8d61e8179f | |||
| f250889c3e | |||
| 00f67d86d6 | |||
| 5b580d2a17 | |||
| 083dd7d1a3 | |||
| 03bd4755ce | |||
| 29d37075dd | |||
| f311bac580 | |||
| beb7a4c992 | |||
| 4d86fb319b | |||
| 5ea4f46de7 | |||
| 1d8d5251ae | |||
| 54c8217808 | |||
| ba623903e0 | |||
| 907af3ae18 | |||
| 24ae8a6b66 | |||
| 1646a5cdd2 | |||
| 814f17d10b | |||
| 40fe105903 | |||
| 42a347d8b1 | |||
| 5450e5dac4 | |||
| 1368259a1e | |||
| 81a495f267 | |||
| 693a4a6633 | |||
| 82786c580a | |||
| e19743f705 | |||
| 9166a57930 | |||
| bd511f97cb | |||
| 560bf40e4b | |||
| 4f4652c1cd | |||
| 60e13c2a1d | |||
| 1fe0dc4d16 | |||
| 181a1e3c0a | |||
| 6bba771856 | |||
| 921f1f42fb | |||
| eeb1f27fa4 | |||
| 9ce21ad152 | |||
| c036929cfe | |||
| 21591a3a89 | |||
| a2e9a41a7e | |||
| 0902349130 | |||
| f900db8e10 | |||
| 0fa9b344e0 | |||
| f48ef3d17b | |||
| 40801d0a06 | |||
| c6ccf1cf21 | |||
| d311992983 | |||
| b4babbe2c7 | |||
| 0719f4c99e | |||
| eb5de15033 | |||
| b229486d3b | |||
| 33b8d3e219 | |||
| 230256793f | |||
| 540ef96745 | |||
| 1baf30a671 | |||
| 5e93840e48 | |||
| 73a5908039 | |||
| 8429148273 | |||
| 17f40e2180 | |||
| 0345b12379 | |||
| 163b0de874 | |||
| 1661caed05 | |||
| 1089aeab9e | |||
| 1a0d3eeb1b | |||
| c27636529d | |||
| ac85488245 | |||
| 433e98b645 | |||
| 873654669e | |||
| 8b96f218d5 | |||
| 52cbff0e15 | |||
| 32de8d9ccb | |||
| e06da886f7 | |||
| cdd5ad3a8e | |||
| 9bee0e460b | |||
| 60c8ace443 | |||
| 933aaeaf25 | |||
| ca43c77525 | |||
| b204182c13 | |||
| dfb4165a12 | |||
| 26a54cd228 | |||
| e229f14121 | |||
| ee6cdfb391 | |||
| 58354e563c | |||
| 48f1bf0918 | |||
| 0ffe1f2cef | |||
| 8fe1adacf3 | |||
| 30245c5d8a | |||
| 67a5225bde | |||
| 58c3d7087b | |||
| c408687af7 | |||
| 33b284afc0 | |||
| 78004bdfb5 | |||
| 640950d4c8 | |||
| 998de0f9a0 | |||
| ce6e515309 | |||
| e054c8fc55 | |||
| 9fa1c2eb3e | |||
| 64a314c19e | |||
| 40be42406c | |||
| bca0eefc83 | |||
| 662ca19f8f | |||
| 65f9d482f3 | |||
| 7058d5cb93 | |||
| f7b13c69e9 | |||
| 9f21b1a097 | |||
| 53983002b6 | |||
| d3c0914ac1 | |||
| 7eb9694221 | |||
| b8f0d37420 | |||
| 1d5b1c239c | |||
| d1ebc08478 | |||
| 5074a91669 | |||
| 40e56c4040 | |||
| 3b0ed9310a | |||
| f92dc6a1ad | |||
| 0040b76a19 | |||
| 6c6fbabf14 | |||
| 8c2d868093 | |||
| 96c9e74c6f | |||
| d947437c10 | |||
| 83df29d832 | |||
| 607afe864a | |||
| a97cee84f3 | |||
| ad64384891 | |||
| f75c73d739 | |||
| 418bcddc95 | |||
| 61192b998a | |||
| 5ea2b09dc3 | |||
| 5bfc2c4a9b | |||
| 8ec47c3894 | |||
| f4423638a2 | |||
| 7b3444308b | |||
| 5ec9916817 | |||
| be1a70299f | |||
| 8685aa371a | |||
| 0224faa184 | |||
| 8546e326cf | |||
| 9956fd2f04 | |||
| 4f669ca82f | |||
| 1cd3881aa8 | |||
| e634513f7b | |||
| 7b6cde6ae3 | |||
| 18146fdf9e | |||
| 2c80c35b21 | |||
| 54b73769b8 | |||
| f7983ee4d9 | |||
| 9eace86aee | |||
| 2fbb58eb2b | |||
| 187d04e3a1 | |||
| d5d7d73440 | |||
| b747e281b7 | |||
| e024d50476 | |||
| a6ba48c075 | |||
| e19375387d | |||
| a9f68187d4 | |||
| 4d754fa78d | |||
| 6d07ab2bc5 | |||
| a60b00c440 | |||
| d0f3f303b6 | |||
| 4fc8acce8c | |||
| 0797a4f99d | |||
| db453c8038 | |||
| c776c34cfd | |||
| 170b39fde6 | |||
| fc27a66825 | |||
| 06b49c140e | |||
| 3ab45c91e1 | |||
| 6660161cec | |||
| 8c6e207008 | |||
| 4180e3c540 | |||
| a218cd0ffb | |||
| 31c8de5bbe | |||
| faac7f365f | |||
| 8cc4332b10 | |||
| abd30da102 | |||
| f4701ff72a | |||
| 393d7885a1 | |||
| b4c6d3c975 | |||
| 3ce440a28d | |||
| cb4ab6a99f | |||
| 6c39d7b1ee | |||
| 840bd52671 | |||
| f3d70c7ea1 | |||
| 22b8528ee1 | |||
| 900e302df7 | |||
| be03d8e137 | |||
| d338a9639a | |||
| 235972f3da | |||
| ae822881e7 | |||
| 26f75c71ba | |||
| ad2aa2eff5 | |||
| 52689049ae | |||
| 1a29541140 | |||
| ece17eecef | |||
| 2b353094eb | |||
| 70305aa501 | |||
| 22dc504ad0 | |||
| ef9402d403 | |||
| f7e29532f7 | |||
| 60770683b6 | |||
| 051bbbc64f | |||
| 206eef964c | |||
| b8b7adff17 | |||
| 42c68d362e | |||
| 1df3967889 | |||
| dae87e26a3 | |||
| f193341eae | |||
| d21a042ad8 | |||
| b16b9e813d | |||
| a79fe1f350 | |||
| 14f99875fb | |||
| 2d2890b34f | |||
| 66d8cafd76 | |||
| 468ccbf2b7 | |||
| 6b6668f73b | |||
| 5eda05f007 | |||
| 1d6a8bd851 | |||
| e500af1ed4 | |||
| 7ee39fd4ed | |||
| 9ba6c83821 | |||
| 4243622414 | |||
| 8374a4f5bf | |||
| 5d851141cb | |||
| 26ac081182 | |||
| 64e0d9a4d5 | |||
| 269a6cad80 | |||
| 806ebdb8a8 | |||
| ed0016fd2b | |||
| a3fb24993d | |||
| 9c26598831 | |||
| 7634f153b7 | |||
| cabc4da3ac | |||
| 6419539305 | |||
| 97e1178525 | |||
| 04faf12c14 | |||
| e7aa79cc9f | |||
| f862e3f37f | |||
| ce051af5bb | |||
| dcb9f1c840 | |||
| 83d0fe9f09 | |||
| 7789ba4d36 | |||
| 80101b04e2 | |||
| 310d4d1b57 | |||
| 126c0c6ad6 | |||
| 6a43b44087 | |||
| 6772b32609 | |||
| db2f0b8c5c | |||
| 1376004197 | |||
| 1625989c48 | |||
| f7863bd686 | |||
| 883565905a | |||
| 786780ce9b | |||
| d2e9fed62d | |||
| 0e5a4fb098 | |||
| f223f042de | |||
| cd413825ed | |||
| a851c272cd | |||
| 412077b418 | |||
| 4df6f8a50e | |||
| 44bf4b1cc1 | |||
| 136e8dd7c5 | |||
| 024b2b04a4 | |||
| 5bbf210394 | |||
| 039c62b09b | |||
| 07f0aa45ef | |||
| de11f44309 | |||
| acee96ef17 | |||
| 4ed49f9dfa | |||
| f68b585f8f | |||
| 13ddc979ec | |||
| b0b7ac3efb | |||
| 62f8525dd5 | |||
| 1347355cb1 | |||
| f847c4a414 | |||
| 776fa924e3 | |||
| 8872466968 | |||
| b620038d98 | |||
| a248367b15 | |||
| c159ec4a9a | |||
| 5359a7670f | |||
| 7e1c7a6de2 | |||
| 91e19bbdd3 | |||
| e61daaee2d | |||
| 8caab1fd92 | |||
| cd944882c3 | |||
| 888d9591fe | |||
| 833808c5de | |||
| d731956b06 | |||
| 40449ae4de | |||
| 44ad61f004 | |||
| 74865d53f8 | |||
| 373415261e | |||
| d0f653da9a | |||
| cbb8319cfa | |||
| 0e467a6024 | |||
| e505916525 | |||
| 31f09ab117 | |||
| 09e5e0f9b3 | |||
| 773cada57a | |||
| 403947ed6d | |||
| d9d08a725c | |||
| e2ed75af94 | |||
| dd19afce92 | |||
| 5b5deac7d9 | |||
| 3f3ee3456e | |||
| 3e2f2fc02e | |||
| c5a3003cf7 | |||
| 4c6dcddf11 | |||
| b314e500cd | |||
| b83e6ad13f | |||
| fee401cfdf | |||
| fa14f62198 | |||
| 5526665494 | |||
| 6249af996a | |||
| e51a1b365e | |||
| f53f00d126 | |||
| ab8fbaf21d | |||
| 63d8bcf882 | |||
| e4e16bc6a6 | |||
| e4c21c4d5c | |||
| d9e6dbf889 | |||
| 5f4469e306 | |||
| 16f6365b18 | |||
| cdab54bf51 | |||
| b6fea0c856 | |||
| 6f186932cc | |||
| de544ec725 | |||
| a6c0d2c6f1 | |||
| 437d956cad | |||
| 43ba0b9da6 | |||
| fe1e2c3b62 | |||
| bbe7e5f96d | |||
| 2bfad9fc65 | |||
| 9f24c18f7f | |||
| a2d1e5ea03 | |||
| b082e4e988 | |||
| 45fbce0c2a | |||
| ff7006e232 | |||
| c68fdef0e4 | |||
| 4c60e4edc1 | |||
| f2e4e59f8d | |||
| 898205b5b1 | |||
| 8ec6862861 | |||
| c3ba6322d8 | |||
| e589828425 | |||
| c909aa161b | |||
| 5cee7d44f1 | |||
| 973b323a99 | |||
| d55954a363 | |||
| adca151e4f | |||
| 43513049be | |||
| a5ca41131b | |||
| 2ea3810980 | |||
| c9cb54e8b2 | |||
| 23dd3db50b | |||
| 179c46914d | |||
| ddb18e6c21 | |||
| d2e147ba51 | |||
| b63033f846 | |||
| 677e1101e6 | |||
| 3abc2ccfbb | |||
| 827d28f1cd | |||
| 59d12a1bbe | |||
| 8134172301 | |||
| 8d983aa561 | |||
| bb3085ef84 | |||
| 78b1650bdb | |||
| 5edc72d475 | |||
| 1df32c9dfa | |||
| bedb1ff7f9 | |||
| fbf12f16b5 | |||
| 22a5f34e1f | |||
| e1a8b08619 | |||
| 466d30fb74 | |||
| 7a1c6d2918 | |||
| 9fcc0dc8e7 | |||
| 286f244caf | |||
| 52ebeab90b | |||
| 6be7591332 | |||
| 73325aaefb | |||
| 0adcc6a8d1 | |||
| 93fb6acd1d | |||
| 77d52b323d | |||
| ca8e8bf6ef | |||
| 9acac86ed5 | |||
| ba5007219d | |||
| ec046fd599 | |||
| 5452ff1153 | |||
| d03b1e0608 | |||
| 53c88ad5af | |||
| 21585ca565 | |||
| 2fabee647a | |||
| cf4632045c | |||
| ec75afbc44 | |||
| c7b298c46f | |||
| 3406bb5a4a | |||
| e9427b4694 | |||
| 517a1f1835 | |||
| 6e735bbd1e | |||
| 5a148aa3b9 | |||
| b4c362da37 | |||
| 575ae164c8 | |||
| a9606bfb4e | |||
| b5ec04723d | |||
| 51cc08411f | |||
| d75034deae | |||
| 4ce23debb6 | |||
| 063706a7bf | |||
| eb41a3655f | |||
| a84476187f | |||
| 70b603d601 | |||
| c9709f2698 | |||
| be4f479afd | |||
| a251465dbc | |||
| 9b7051f2be | |||
| 8bfdef79c4 | |||
| f2c2bf81b3 | |||
| 8b5247b9bb | |||
| 075b1dc0eb | |||
| 42e1f0478d | |||
| d4653678b2 | |||
| a4ce752e58 | |||
| f6649398ef | |||
| 02859cc270 | |||
| 4ed30e082f | |||
| d3985dd129 | |||
| ac70821fea | |||
| 38b273a1c9 | |||
| eb5c88fbb2 | |||
| 1102952b47 | |||
| 5ad6cadcee | |||
| 5d236808d6 | |||
| ada9243e84 | |||
| ad4e1c1b5b | |||
| c5105c29b0 | |||
| f689b0f3b2 | |||
| 730f614024 | |||
| 2e4eb17a48 | |||
| 55d2a1f09b | |||
| e3a5bcb907 | |||
| d56567c9de | |||
| d7c381e05d | |||
| 1d23dd2426 | |||
| 86ce00adf9 | |||
| e1eef013a8 | |||
| d20046c866 | |||
| 2df452fe5b | |||
| c31bfd8b94 | |||
| f443675f4f | |||
| a44bd8849d | |||
| 274c887140 | |||
| 44973ebd00 | |||
| 88f74163ff | |||
| 6cd57dd426 | |||
| 481e866011 | |||
| a78450ba79 | |||
| 9fcdeca692 | |||
| 8e10c56304 | |||
| 591f600b11 | |||
| af03e55a73 | |||
| 1462cddd1e | |||
| aac569a925 | |||
| d19ac1fd15 | |||
| 410a23751b | |||
| 8190507e8c | |||
| 645f74f39d | |||
| acdf0912d4 | |||
| 32e4e91ab8 | |||
| b59ca329f3 | |||
| beb9099bdc | |||
| a013d95f0f | |||
| 9d5daf0015 | |||
| 1146307736 | |||
| c25eaadc1d | |||
| 50f6e76ab9 | |||
| c3637e731f | |||
| c31eef6b82 | |||
| 802683b765 | |||
| 335cf93970 | |||
| 041954c067 | |||
| 2da44c3699 | |||
| 65e53092e8 | |||
| 0203aa2b6e | |||
| f83fe28a18 | |||
| e487b45898 | |||
| 4a94eab393 | |||
| 5ff7e6ef0e | |||
| 0c99f41bd9 | |||
| bcac810f71 | |||
| feae105426 | |||
| d46b9c54b1 | |||
| d0b7162b6a | |||
| c16660254b | |||
| bbe0d52740 | |||
| 65117ebdd7 | |||
| 445d55e800 | |||
| dbce751464 | |||
| b8640d903f | |||
| 6e7560ee77 | |||
| efa26a067f | |||
| f7cf7c198d | |||
| d32f4fc38e | |||
| 0c8b8647f3 | |||
| c38dbbb1d7 | |||
| 98cec15625 | |||
| bad9828f47 | |||
| 18f91ddffa | |||
| 335745d365 | |||
| 4204b31398 | |||
| 029a568645 | |||
| 6b2f1fcd3e | |||
| 3bdc610249 | |||
| c03a70fde2 | |||
| c77645e173 | |||
| 6531002d61 | |||
| fea808ca5f | |||
| 59ba408070 | |||
| 3a8931feef | |||
| 7ebd8f6bf5 | |||
| 73883979c6 | |||
| d8935b46b3 | |||
| 1505d04622 | |||
| 3b690cc31f | |||
| b3814920bd | |||
| 8bf1f828b9 | |||
| 911e69e3bc | |||
| 77b4a1eaf6 | |||
| 2ed12c429e | |||
| e578c52fdf | |||
| 5ff4e3c4ea | |||
| 1c2e7256c1 | |||
| 7a51ca225a | |||
| 8d242d8072 | |||
| 543b068efa | |||
| eadbd5e821 | |||
| c771f5a13c | |||
| f13b3111c3 | |||
| bb2714ff24 | |||
| 54c42b1fc2 | |||
| 1f42f933f0 | |||
| 6c533d225b | |||
| 67a89d1289 | |||
| 0b9bef2f38 | |||
| 1c4649409d | |||
| e1daaf07ce | |||
| cd21f2d1d7 | |||
| 836e41064f | |||
| 4658e4c739 | |||
| 7993a7cdb0 | |||
| 567cb7d737 | |||
| 985128b537 | |||
| cd35568e04 | |||
| f612509cac | |||
| f415190483 | |||
| e00733a346 | |||
| aafafa0e73 | |||
| c87c9af12e | |||
| 622215715f | |||
| c87250c028 | |||
| d6b6d700a5 | |||
| 9d4e2c98a3 | |||
| 08094c2660 | |||
| fda82c82b0 | |||
| f0eabd4ea0 | |||
| 5a4d812146 | |||
| bf156a13bd | |||
| 53d276a8fc | |||
| 978fa54518 | |||
| 31f82e58b5 | |||
| 5967f66e6d | |||
| bea81b54ca | |||
| 6fd403bdca | |||
| 3d673d9d40 | |||
| cac949de56 | |||
| dffa152698 | |||
| 7796298fca | |||
| 5291bfe8d4 | |||
| b364313297 | |||
| 2bef608e07 | |||
| aee13ad909 | |||
| 9d82eba599 | |||
| 4852beb390 | |||
| 522c2f61c0 | |||
| d331396afe | |||
| c725cee044 | |||
| 367ef4ecb2 | |||
| c3a64facd5 | |||
| 2671781e1b | |||
| 9291fa68aa | |||
| 6ebb3659f4 | |||
| 109696e965 | |||
| b86bbd370c | |||
| 1575a4fb1a | |||
| e2f500be90 | |||
| 284b00a826 | |||
| 66180e19b5 | |||
| 1531462d22 | |||
| e17cd1f298 | |||
| 13092e9f80 | |||
| 8133b8b9dd | |||
| e25aafac6d | |||
| 037c7beb1b | |||
| faac4dfc30 | |||
| 469a088a4d | |||
| 9c854f727f | |||
| 8f6e5bd24b | |||
| 992f91cf4c | |||
| 0c61d4c978 | |||
| 72d32edf9a | |||
| dde39def9e | |||
| 6b43007c44 | |||
| 876558cf77 | |||
| b35a146edf | |||
| 86cf6a9908 | |||
| b0f7288ac0 | |||
| 32fcc1a8fb | |||
| eb4d125eaf | |||
| 87e5cced3c | |||
| bcd9ee2d48 | |||
| edf3d87458 | |||
| 0c0c353ecc | |||
| aaa4c8f899 | |||
| 57e3565c11 | |||
| fbcf72d762 | |||
| ca8daa836e | |||
| c2ccdbec9d | |||
| 69aee36e75 | |||
| 063f5c3b55 | |||
| 6d1b8ca65e | |||
| 03899d4d9c | |||
| 2b84af977d | |||
| e15b180322 | |||
| f070030f6b | |||
| 330ac66b38 | |||
| 12a9e650af | |||
| 1e5ccd811e | |||
| 2902ee6ad5 | |||
| 90ce4fec2c | |||
| a7ab26d08d | |||
| dcc396afb7 | |||
| 3f1722d54d | |||
| c79658afbb | |||
| 6f84ebb323 | |||
| 54c8d62243 | |||
| 83e6476408 | |||
| 03f317ffdb | |||
| 3f67c7c74a | |||
| b8b4660563 | |||
| 3d42bfd479 | |||
| c4ebbaba74 | |||
| 2ae193092d | |||
| 7e1d52ff00 | |||
| c98f43b984 | |||
| e93f128a7a | |||
| 71d8e7edd2 | |||
| 48f4298a8d | |||
| 1c15beadc7 | |||
| 2c1600ddfb | |||
| 298f7d9d52 | |||
| 105f0bfde2 | |||
| cf3a78e114 | |||
| 9cc5f0f889 | |||
| 81e588a896 | |||
| e30db9ee77 | |||
| 235be757f8 | |||
| e31d26a887 | |||
| 2293ba02ea | |||
| 7188997dd1 | |||
| 31cfb09468 | |||
| b76f2e2008 | |||
| 4b90972341 | |||
| f4ff34224c | |||
| 877c9c4ff9 | |||
| ac0b7291dd | |||
| 491ef6085a | |||
| 3cedef4974 | |||
| 22ab04bd2b | |||
| e5a080aebe | |||
| c560cc5add | |||
| 0d27bc323b | |||
| c71d3cef18 | |||
| 4e2d8daa3a | |||
| d0f51da0af | |||
| aeb73bca27 | |||
| f239b03291 | |||
| 297c2965f4 | |||
| daddf4d98e | |||
| e05f9bfebf | |||
| ef46aeae6f | |||
| 7edb3fd856 | |||
| 43b79778ea | |||
| 37f1f53b56 | |||
| 67bd1cdcd9 | |||
| 506385e5a2 | |||
| 2d4586b1c4 | |||
| 1476b9cb9c | |||
| 7bdde68ece | |||
| 50f92f55e2 | |||
| 370db62bf0 | |||
| 65f34f1d31 | |||
| 00a3908abb | |||
| 32034d590a | |||
| 3635fb3910 | |||
| d2ecfe5491 | |||
| 1f759dce5b | |||
| ae41c6038b | |||
| f41f7eb2ad | |||
| d04f383161 | |||
| cb989d7489 | |||
| b5cba19d26 | |||
| b7271d7a46 | |||
| 768bdc2cc2 | |||
| a0a093e260 | |||
| 0b2a7fdc15 | |||
| f1876e20f8 | |||
| 7d6a6e53f7 | |||
| 6b765a1f77 | |||
| 3b3c93dd53 | |||
| 521083a309 | |||
| 6d35325601 | |||
| 3c65f37d84 | |||
| d75dd058d6 | |||
| 40475e02ec | |||
| f6ea9c1300 | |||
| 902359f24e | |||
| bb4d5f1e93 | |||
| 1dec3f000e | |||
| 6d89814795 | |||
| f339bc9f7f | |||
| bb80bc0c07 | |||
| 96677ff8bf | |||
| c7b6a6df79 | |||
| 8bb7e8bfb2 | |||
| 02ab343e22 | |||
| 4d875a18de | |||
| cff2336923 | |||
| 0e96bfdfa3 | |||
| a24ef48ad1 | |||
| fe9c4f3391 | |||
| 6cbb0739f8 | |||
| 79ebabfcfb | |||
| 0c8e3262fe | |||
| c24a040c19 | |||
| 4f39cb8dfa | |||
| cdd2816642 | |||
| 27b6dfa4d2 | |||
| 204cbd0209 | |||
| b7980aad5a | |||
| e175729e2c | |||
| c26ad4c807 | |||
| 4372adc703 | |||
| 8a0c2b9b13 | |||
| 4443a1c030 | |||
| 39a02235cf | |||
| db89561480 | |||
| a4cbb11693 | |||
| 1ceeacc526 | |||
| b59052cc43 | |||
| b5d8161bc2 | |||
| b497eda26e | |||
| 44019e1042 | |||
| fd0e1da4a2 | |||
| f6c67b475a | |||
| ea18a5ad15 | |||
| 4d0cd3f497 | |||
| 7dbdeaebe0 | |||
| 2085bcceb6 | |||
| c09c962cb6 | |||
| 9108459ae4 | |||
| 992bac0b1f | |||
| ebd6917a1d | |||
| 3e079e3b80 | |||
| 2ca20be197 | |||
| 17f23f3751 | |||
| 8e3d699856 | |||
| f1a168fa53 | |||
| 3575113655 | |||
| fe9dd7d23f | |||
| 9feb9d04b3 | |||
| 5419b1439a | |||
| 6f8fbe3f09 | |||
| e4489343fe | |||
| d9f4a5793d | |||
| 70fcdc9ebb | |||
| 78e7a81638 | |||
| 58e82d5dbd | |||
| 06d15be43a | |||
| e1e7011853 | |||
| eff7645035 | |||
| eb75e52278 | |||
| 15e6148272 | |||
| ccd448a675 | |||
| db54c019ad | |||
| b762b4d72c | |||
| 2f8faa839d | |||
| 831c325c63 | |||
| f4f73078c5 | |||
| f7d43ad5af | |||
| a77c777980 | |||
| a34db7449e | |||
| 0283bd2f97 | |||
| a8de2f8ae7 | |||
| d5dee75df3 | |||
| 6b7631ed5e | |||
| 79cb5c0631 | |||
| 7d9901540f | |||
| e979e9c9fb | |||
| de719df6fe | |||
| 38d7f91ea0 | |||
| a20a429e8c | |||
| 9b63fb4ee2 | |||
| 099efdbc1d | |||
| af9120fc7a | |||
| 798a48aa96 | |||
| 462e22a3b0 | |||
| 4e432ed03f | |||
| 1b56c0f191 | |||
| 94cbeba495 | |||
| dfa74a69f7 | |||
| 9e1e4eeec2 | |||
| 962f8233b0 | |||
| 31923d511e | |||
| fdbb8300d3 | |||
| 203d8bca57 | |||
| 74c331eaf7 | |||
| 54365528a8 | |||
| bc174f7054 | |||
| 221e068bac | |||
| 1bdceeecf4 | |||
| a6824d9cd0 | |||
| fe03f9942b | |||
| 4c196922fb | |||
| 2a9a513d85 | |||
| 2bcea27ecd | |||
| fb7341f1f7 | |||
| f327daa12d | |||
| 2872b9fbf9 | |||
| cedd5c9c96 | |||
| 60e6aa9b54 | |||
| 541f482518 | |||
| 4019b7939a | |||
| 013b9c4c7c | |||
| 79addfda42 | |||
| 8546bda471 | |||
| 0770f174a1 | |||
| 5f4a89cecc | |||
| cbe0b1c5a6 | |||
| 0af193c505 | |||
| fdcfcc77a0 | |||
| 06d166d0d7 | |||
| b1b3e39fcd | |||
| 5ec025a3b9 | |||
| 58b7fbcf75 | |||
| be053d47e4 | |||
| fae1981161 | |||
| fd95549de9 | |||
| ff10bc05ec | |||
| eb8cd53de2 | |||
| 3fc863561a | |||
| 131cd94495 | |||
| f3a90a63b6 | |||
| 2494173aec | |||
| 866eb6241b | |||
| 86b3df1941 | |||
| e87f6d56f5 | |||
| acc890730f | |||
| b0707739fd | |||
| 251dd1fe45 | |||
| b9f3dc65e0 | |||
| 238ad7ce51 | |||
| 99fd5fca4d | |||
| 8eda77b76d | |||
| 81ac240ac8 | |||
| 6109798fab | |||
| 95715a007d | |||
| b33ec201ac | |||
| b53fbaf5b3 | |||
| 1e03a2e553 | |||
| fda7c6f67a | |||
| fabb7982ff | |||
| cbf206be60 | |||
| aa0c282205 | |||
| 9759365329 | |||
| e3738f6422 | |||
| 9746d169f9 | |||
| 2e6d03ff00 | |||
| f7b7d3d65e | |||
| 4037cf11aa | |||
| 02aeb321ce | |||
| 0012619257 | |||
| 6f3ade0d94 | |||
| cf572f328a | |||
| d1ce36038c | |||
| b382351c7b | |||
| 4e5e862f58 | |||
| ab84835362 | |||
| 41ce8489dc | |||
| ef3faf5832 | |||
| edf089ec9e | |||
| 0ae9a3605c | |||
| 7f9c4e52ac | |||
| 35947f96a8 | |||
| b0f91f1eea | |||
| 13dfca1749 | |||
| 9d9cd8a362 | |||
| 5e5c41fda5 | |||
| 3ebdc52b3e | |||
| af54f48cec | |||
| 8656059151 | |||
| a6d38f2458 | |||
| 085bdf5cfa | |||
| 6883bcacee | |||
| 2ecc6e0368 | |||
| 8fb5ca2fe1 | |||
| e40345095f | |||
| ffc0c7bb7b | |||
| 58fadc8928 | |||
| d96a607c04 | |||
| 2ea2c8c05f | |||
| b15f514018 | |||
| 05a33a0ec9 | |||
| 747d266742 | |||
| 522d30545b | |||
| 6135a44a8d | |||
| 7c7d646792 | |||
| 4a36fd2ec3 | |||
| b1bcc287cb | |||
| 6f5868a9d7 | |||
| 75863441f4 | |||
| 9763cb00e5 | |||
| 521599ef39 | |||
| 1921a64f4b | |||
| 6b73f5d555 | |||
| e0408f30ba | |||
| dca44fa093 | |||
| bbacb76581 | |||
| 1da8617a53 | |||
| e5967f7e9d | |||
| 65d84f9e9d | |||
| 93e9498b41 | |||
| 95332d5db9 | |||
| 9864792bbf | |||
| ca9d1eed7a | |||
| 38e867c917 | |||
| 1ff6daaa27 | |||
| 3ee1dbb8a5 | |||
| b4571d5c98 | |||
| 29d49d72f9 | |||
| 81de0fc7e4 | |||
| 9d5d266d2a | |||
| b97935299f | |||
| 32a7ea1c16 | |||
| 9fd95e6a1e | |||
| 61ba83c775 | |||
| 6369fed5fc | |||
| 42f4d1477d | |||
| 609ac9c9a2 | |||
| 79f2367472 | |||
| dfc9362084 | |||
| 487b469603 | |||
| 19e1df1e5d | |||
| fc55010888 | |||
| 56a36aa595 | |||
| 0b3158fdd5 | |||
| 896cd950e9 | |||
| af5e1b805f | |||
| 3f9943270c | |||
| 902d246d1a | |||
| 785bee2b39 | |||
| 4b335db31c | |||
| 4bef527ebb | |||
| 8273031d7e | |||
| dbf69bcd98 | |||
| 24d3096752 | |||
| 9a3754fbf8 | |||
| c2a95a13fe | |||
| b46466ac96 | |||
| 06991ddb17 | |||
| 4b3f4a868a | |||
| 014eff3534 | |||
| c01b7ddb59 | |||
| 0ff700849f | |||
| 5c695dea20 | |||
| c7ee4ca4db | |||
| c3da026b33 | |||
| 98da4e1791 | |||
| 8626b6d9f2 | |||
| 80c5331a5d | |||
| 39dc5c8160 | |||
| f3002e4fb6 | |||
| c451823c2b | |||
| b37cffd704 | |||
| 2af91dbf2a | |||
| f2551318fc | |||
| 22eb84f944 | |||
| 1ece0915f1 | |||
| 87853a2015 | |||
| 46a1b74799 | |||
| 0f6e7e5eab | |||
| 5dfa9615d2 | |||
| 1bde777bee | |||
| fa4f5df3e7 | |||
| 8a3c3810e0 | |||
| 144532530a | |||
| 0f1129e19b | |||
| 1f74580f15 | |||
| f93ba9970c | |||
| f87a3d0892 | |||
| c661ad67d0 | |||
| ce4dc9e3fa | |||
| 3d2c6e6032 | |||
| 6000a0cfe3 | |||
| b80c60997a | |||
| 35e45f0df1 | |||
| e65f5b9f78 | |||
| 5969f71e67 | |||
| b1307863eb | |||
| 9d0abe993b | |||
| c53bb7cf67 | |||
| 0cea26c628 | |||
| 610c919c72 | |||
| 2c35f94f7c | |||
| cd9a3870b3 | |||
| e11373f23a | |||
| f591635fc1 | |||
| 474b57ca61 | |||
| 8671887abc | |||
| 8274d1baa5 | |||
| bde601bfff | |||
| a2e0951042 | |||
| 3c9a8a38dd | |||
| 4c067fd39f | |||
| 5c251ee774 | |||
| ddda691552 | |||
| ba73090d53 | |||
| a080b606ab | |||
| 7c0f43c8a3 | |||
| 4fad1aee6b | |||
| 19aec5bc8d | |||
| 33ee60736c | |||
| c1bccb970f | |||
| 481cc029fa | |||
| bdaf58a3c4 | |||
| 0f64671dc0 | |||
| 60f055f293 | |||
| c67a9215e3 | |||
| a0e9df6d6d | |||
| 8341749c04 | |||
| 66d1886663 | |||
| 710e1fc278 | |||
| 4cf98584da | |||
| 3fb3cee423 | |||
| 2d1504a057 | |||
| 4fcfd089d8 | |||
| 04422a4637 | |||
| 37e6548246 | |||
| a761989f3e | |||
| acaa8b1731 | |||
| 082f47663d | |||
| 92f42154d5 | |||
| fc1084ce33 | |||
| adc3ab7e0a | |||
| dcc8c56969 | |||
| 0b3472d227 | |||
| b50121ad0b | |||
| dfddfc3e06 | |||
| 34ec6210c6 | |||
| daaef316e9 | |||
| cdac12bb2f | |||
| 3ab99647aa | |||
| 529482a83e | |||
| 29906ec057 | |||
| 9296ba7492 | |||
| 821c6d807d | |||
| 991b741cbe | |||
| 2559f0e822 | |||
| 8bb1ed3e95 | |||
| 56ba3fcb92 | |||
| e99a20a120 | |||
| f1a25b21a6 | |||
| cf9595ce58 | |||
| 7feece597a | |||
| fa16c782ca | |||
| a03d0b6a4a | |||
| dff76b8912 | |||
| cffea9a9bc | |||
| 43fee42198 | |||
| 5cd3968929 | |||
| 65dcae79f8 | |||
| 2b3b75a4a5 | |||
| 26b395110c | |||
| e11b3becfd | |||
| 73fa937f5c | |||
| 6ebe2e54ac | |||
| fb29a11cc9 | |||
| a9e06cbf92 | |||
| 93017c044d | |||
| c223ddbb9a | |||
| f00aeacb8b | |||
| 5b49071d6b | |||
| 17053a882b | |||
| 5e723d31a4 | |||
| 3283bd8b75 | |||
| 770d3c0015 | |||
| d15dfafd5d | |||
| 545c13d55c | |||
| e2099ac9ca | |||
| c937583a50 | |||
| 43c7a19849 | |||
| 83543487e7 | |||
| 434b259525 | |||
| add8efaba8 | |||
| 12ed79ca60 | |||
| 1e863382d3 | |||
| bad3504d4a | |||
| d94f207162 | |||
| 2c4b7781a4 | |||
| 4574c6ff07 | |||
| 7b5043e87b | |||
| a06f3ac5da | |||
| 721346a40a | |||
| f252871fb8 | |||
| 107196122c | |||
| 563c02d8da | |||
| 765934970a | |||
| 9cbdfda829 | |||
| c1fbc8cd68 | |||
| a92107cc47 | |||
| 3e84e116e8 | |||
| 7c0cdd169e | |||
| 424fd96615 | |||
| ebfcea88da | |||
| 3c7eb2f5e2 | |||
| 936167972f | |||
| 7f6070c960 | |||
| 0aea9c129c | |||
| d20fb7daa8 | |||
| a619f8a2fe | |||
| 0acb858d7b | |||
| e459be76fe | |||
| c4c59ccc75 | |||
| c820315409 | |||
| 2a19b61b7a | |||
| e1cf64ae16 | |||
| d3c2f8eb43 | |||
| a00453c83a | |||
| 2eb0e54909 | |||
| ac87bc57e9 | |||
| 2b8ea857f0 | |||
| 11c52114b2 | |||
| f55f9b4dd3 | |||
| cdd369ea98 | |||
| f2aab9f476 | |||
| 2619dc3556 | |||
| 1bbed351ba | |||
| 4cfb2644c6 | |||
| 5b85c7ad39 | |||
| ab3a3156f2 | |||
| 28a582025e | |||
| 8451a83a3a | |||
| 92c8dcc666 | |||
| da68b02e1e | |||
| 2d7729dbe9 | |||
| 6467edb843 | |||
| 1f01b3a9ff | |||
| 8aa1f8926d | |||
| ace363fa35 | |||
| 919f70a5fd | |||
| 9d6ad771a3 | |||
| bafccb20c6 | |||
| cef30c2af0 | |||
| ca58056a75 | |||
| 03e2e99498 | |||
| fba7afc4e9 | |||
| d7dda336ec | |||
| 55d4395160 | |||
| f7d5baa6d0 | |||
| 6ff509d263 | |||
| 57778981a7 | |||
| 6ac3bc564f | |||
| 82d08e2153 | |||
| 6212cd77e8 | |||
| 170034f943 | |||
| e639a8f9f1 | |||
| 9d10c45dac | |||
| b84159f2f1 | |||
| 49f26b4049 | |||
| 0e7e44cee2 | |||
| 36e769502c | |||
| a4b6580247 | |||
| 84fb1c5127 | |||
| ddfd0fb81d | |||
| 37edbf5824 | |||
| e15212bf49 | |||
| 6a0cc1b1f3 | |||
| 0e8339c701 | |||
| 5d71a4dbde | |||
| 0b78030c59 | |||
| 24237c16bf | |||
| c48da5dea7 | |||
| 6702ca10a1 | |||
| 4b44bd5e61 | |||
| 8a55beda92 | |||
| a12b824339 | |||
| c4a743189e | |||
| 85f9ef35f6 | |||
| 6de220e38a | |||
| 0d455d8c2f | |||
| f7b0b44ef6 | |||
| 81282a9c88 | |||
| a9b302e38d | |||
| 1fe4c367f7 | |||
| 2de7583900 | |||
| 356703c83e | |||
| 1cae709b2b | |||
| 46a492248f | |||
| d876ea6711 | |||
| b40b4c3cfd | |||
| 44980d6c46 | |||
| 442f9647a2 | |||
| a06ef07178 | |||
| 0c2ea5da4c | |||
| 45814ceb49 | |||
| 41f4617e66 | |||
| a463711b03 | |||
| 3a147141b1 | |||
| aea1c13bd3 | |||
| 9cc4c017ae | |||
| 88022747be | |||
| ebb292a2f7 | |||
| 818998259d | |||
| 36b02c2cec | |||
| e6195ade3e | |||
| 231a875bb4 | |||
| 378c777a38 | |||
| 8ef63916ef | |||
| f32ecdf5f1 | |||
| 94739b9b8e | |||
| 023db4e04e | |||
| 5a4b95f5fe | |||
| b091657b5c | |||
| f7bf5c9328 | |||
| 86e521b9aa | |||
| e08cf57b72 | |||
| 9e06cb9a83 | |||
| c65e8622b8 | |||
| 7795efeb7a | |||
| e725e0020e | |||
| 8478ce25f1 | |||
| 22cdac6210 | |||
| 3422a1a59f | |||
| f807b8cb46 | |||
| e1e510ce1e | |||
| 36bc3ff22d | |||
| 1db1ffde99 | |||
| 7984b625ba | |||
| bb22f062ed | |||
| a3086e6a5b | |||
| 1eb9bd34fd | |||
| cff7baaaad | |||
| 47af700375 | |||
| eb7f53a1e3 | |||
| d23792fda2 | |||
| b5cbb8e450 | |||
| fc037b4518 | |||
| c04921f42b | |||
| 8af3463668 | |||
| 094565ccd6 | |||
| 07b9769504 | |||
| 566b12f5d1 | |||
| a560999d13 | |||
| a818a3d293 | |||
| 4d68a174cb | |||
| 905219e523 | |||
| c675b87040 | |||
| e2dadfdc40 | |||
| a66f9aa04d | |||
| 863e74dd2e | |||
| aebb07c5cc | |||
| 677fec0a0b | |||
| 61f06faaf5 | |||
| fcf8309c23 | |||
| 76b19a4980 | |||
| ed1a9fc7aa | |||
| b71e30755d | |||
| fe196d1b20 | |||
| 0b152a3cb8 | |||
| 1a0e096ddb | |||
| bf040d4c42 | |||
| 3e2101aa5b | |||
| 44f11b38e7 | |||
| 06f8514bc1 | |||
| d9a9f1c25c | |||
| e77f7244ba | |||
| 09779cd1e1 | |||
| 11024168db | |||
| 304914513e | |||
| 03d0efcfc6 | |||
| 0c2bdc9146 | |||
| 188450b0c0 | |||
| ddf6bbfa46 | |||
| 2c7c98a152 | |||
| d31ac75718 | |||
| 4b28c659de | |||
| 00b937e52a | |||
| 68f333fb87 | |||
| 085b4d9319 | |||
| b8edd14f39 | |||
| 61a19d694b | |||
| aa96859798 | |||
| abf015f485 | |||
| 0b9a02afde | |||
| e332ce28f8 | |||
| 08e779f9f1 | |||
| a53b6cd28f | |||
| 47ebab237b | |||
| 5a5af60f97 | |||
| 50cc17c7cb | |||
| a1e504c138 | |||
| 4cc413047c | |||
| 2397097e4d | |||
| c88f959ec9 | |||
| 0b2e28b62d | |||
| c7f2ead696 | |||
| b454e02d01 | |||
| 47df2ffc3e | |||
| d18e431e2f | |||
| 0a147d2db7 | |||
| ccdc933064 | |||
| 023f2d4569 | |||
| 06a7371d2b | |||
| 626f5d3487 | |||
| 8cd3b9fe2e | |||
| 716c35d52a | |||
| 8cc0f3918b | |||
| 98b51f0799 | |||
| 81d6dad548 | |||
| 41bc11cf96 | |||
| 721dbe415a | |||
| f5c0b51428 | |||
| 892c6ad80c | |||
| a47805e494 | |||
| 9dd49054d1 | |||
| f5d1d1a0b7 | |||
| d75fcb7fec | |||
| 826be45b6a | |||
| d35d9c17c5 | |||
| f9553e7d44 | |||
| 638c9720cf | |||
| 08a190882f | |||
| bfa7530a39 | |||
| 6c74148c27 | |||
| 480cad0fed | |||
| 32be489136 | |||
| 11801d8e2e | |||
| 1b280a2940 | |||
| 424890a1e1 | |||
| 5f85219495 | |||
| a63d687f1c | |||
| f2d6c3ad83 | |||
| 0b6941d5ce | |||
| 048696ee93 | |||
| ae51676471 | |||
| 27a405fb1d | |||
| e2cf65b591 | |||
| 9749fc817d | |||
| e6600f2c43 | |||
| a664931e7a | |||
| a2ba965600 | |||
| 65255dbb50 | |||
| a5cb8761a5 | |||
| e3930e0717 | |||
| afd59e9933 | |||
| 8087524bef | |||
| 605440812f | |||
| b10c6eb615 | |||
| a96264ff6a | |||
| deb3893820 | |||
| 9b1d822b5b | |||
| f933fb705c | |||
| 5cd61c4c02 | |||
| 586fa70eac | |||
| 9b420ad33f | |||
| 5891290672 | |||
| 72a7b51d47 | |||
| 2943e0e58d | |||
| 5abce916a8 | |||
| 89d4be8a0a | |||
| b7113bda23 | |||
| 0088929622 | |||
| b3468cf7f2 | |||
| f88c5c8528 | |||
| 687fdda7f7 | |||
| aec51e514c | |||
| 308d4600ef | |||
| 50a5fa15bb | |||
| 7d96a57d73 | |||
| 162ebfd4e0 | |||
| a586a92d5e | |||
| 3df20a924f | |||
| ddcf466e4e | |||
| 5d10cbf18d | |||
| 918ea59b9a | |||
| 8d9afa7592 | |||
| 95e05336c2 | |||
| a188385817 | |||
| 0a6baf331b | |||
| 0e29e052d5 | |||
| d8d255980e | |||
| dc5a5fa543 | |||
| 8638fc91ff | |||
| 96a0900edc | |||
| abea80e3ab | |||
| 42dfe936b7 | |||
| 8385bcc2d7 | |||
| 9b8f60b64b | |||
| b9dab77c8b | |||
| 474114236e | |||
| 238b0b421a | |||
| 8abe62886a | |||
| 78cc9cffe4 | |||
| 59a5dd713f | |||
| a39024ff03 | |||
| 72bfbd93a8 | |||
| c9a3e3d9d2 | |||
| 8387708901 | |||
| b565b4b3b9 | |||
| 893dcd4f24 | |||
| d613aa8f3e | |||
| 5750bb7067 | |||
| 0e07ae6ce8 | |||
| 02b6351e13 | |||
| 78367af830 | |||
| dc05cd481f | |||
| 7daad5477a | |||
| 45cdfbfae8 | |||
| 4159534a64 | |||
| 3fb5c38571 | |||
| 59f80ebc47 | |||
| 198a97b00c | |||
| 3ea4e917e8 | |||
| 60ad077172 | |||
| 356ad28e41 | |||
| e241141220 | |||
| 14bb1b467a | |||
| 2bbea6fd3f | |||
| 48aef25b3f | |||
| 8e50e5dee3 | |||
| d5d54d4d3b | |||
| 412e8a32dd | |||
| 0f82cf409b | |||
| 79df39acab | |||
| d00177a9b6 | |||
| 8786bae7dc | |||
| 4b3f8ca361 | |||
| 03183218f7 | |||
| 95b6db57e1 | |||
| bbe0c2457b | |||
| c894c53e69 | |||
| 5b3fb7387d | |||
| feac310caf | |||
| d67ec3feb3 | |||
| cf8abb4528 | |||
| d66de26de4 | |||
| e5a7ada3cf | |||
| b76fdd7fe4 | |||
| 7edf3f6147 | |||
| 2143dff2ae | |||
| 32c714d1b6 | |||
| 84e699ee24 | |||
| 7fdb572b8b | |||
| 91ffb0820a | |||
| cfd3b66be9 | |||
| 75c4f9dea8 | |||
| a76a32230d | |||
| 0730f5ff4f | |||
| c43d0a684c | |||
| 66f1eda6cf | |||
| bf4d191c8b | |||
| d76d56fcce | |||
| 251b0c58de | |||
| 073cca4e8e | |||
| a4ad99f189 | |||
| d37b910889 | |||
| be69244e8d | |||
| 617f74a225 | |||
| a2710ddc25 | |||
| 70101bfa7a | |||
| 203f2984d7 | |||
| 1d510e76b8 | |||
| 64244af2cc | |||
| 35e109882e | |||
| 18a32ffb0b | |||
| a5af3ba0cb | |||
| 83bd39a9a8 | |||
| cc0657aaa8 | |||
| 965dc2cb47 | |||
| 9c4cbe17a2 | |||
| 835fcfa4ea | |||
| 932780c578 | |||
| 37f160a452 | |||
| f80b706fc3 | |||
| f78cbed4d8 | |||
| e0b12c78ff | |||
| e7cf814a59 | |||
| 865c45593b | |||
| 62e6f109c7 | |||
| 60be8ed022 | |||
| c157882900 | |||
| a23c211a65 | |||
| 293ed6bd7e | |||
| 13ddd7c5f9 | |||
| 0de015fc8b | |||
| d34fedae01 | |||
| 7c623fc467 | |||
| 359079c3e6 | |||
| ba72fa3f05 | |||
| 23caab5b06 | |||
| b506bd15a5 | |||
| d0d9d68fe6 | |||
| 88134ac130 | |||
| 3d8a5196a0 | |||
| c4fb138ae8 | |||
| 759cfdaabd | |||
| 3d9620abb0 | |||
| 420b0394a7 | |||
| 84bb4c8b07 | |||
| 310dbb61ee | |||
| 9b536af9e6 | |||
| c2ca1ea1e5 | |||
| ada4b226de | |||
| 67f956d4a0 | |||
| f68af7dcf2 | |||
| be1b6f8edc | |||
| 1150f62927 | |||
| b4c7a521b4 | |||
| 5d083a1536 | |||
| 2f5ed3aead | |||
| 2951df0cd9 | |||
| ec22070957 | |||
| 0e36f03954 | |||
| 57309ae3d5 | |||
| 7545194f97 | |||
| 4bb0918e27 | |||
| 64e5449ab3 | |||
| a0eeb17d73 | |||
| c021dd03d3 | |||
| 2f1683b26a | |||
| c99939f435 | |||
| efad8bac3c | |||
| eaf68fa463 | |||
| 9475f2e56c | |||
| 2e0c067cd2 | |||
| 59a6043549 | |||
| 840a7b7c73 | |||
| 61e322678b | |||
| 04acd08ad2 | |||
| f3bf4faee0 | |||
| c3603ba220 | |||
| a3a52fd12c | |||
| 7c4756da81 | |||
| f4fe03c790 | |||
| a748bb9352 | |||
| d24fb6ed48 | |||
| 021dc5b82c | |||
| 9339b78f80 | |||
| 8449f8580d | |||
| 0948c5bc69 | |||
| 857589b365 | |||
| c39b1bf823 | |||
| 545aa50898 | |||
| 298006a4b9 | |||
| 903a4131ab | |||
| a0ec0ddb14 | |||
| 46eb876f9b | |||
| 8374c3941a | |||
| 8cec14c2ff | |||
| c716f105bd | |||
| 737be1f571 | |||
| 6f17c700b8 | |||
| 04d79f9117 | |||
| 8145808c43 | |||
| 86d5626d92 | |||
| 071ef281c1 | |||
| 70760e4ede | |||
| 8a32fd36ad | |||
| 2e30fff221 | |||
| 667ffa5dff | |||
| d271120c24 | |||
| a03ae5a216 | |||
| 0e73fa40bc | |||
| 5d6f0d8546 | |||
| 41e23fb6a8 | |||
| 4e15556e5e | |||
| bf30b7afae | |||
| 8801afa586 | |||
| 47804353f9 | |||
| be58e3084b | |||
| 71d5ab21ed | |||
| 993bc7432f | |||
| 99ff879d93 | |||
| caa15b4735 | |||
| cc8da0cf13 | |||
| 0b6618ff70 | |||
| 6f180f534c | |||
| 4220ef2a5b | |||
| 2acaa66635 | |||
| ee5eecbec1 | |||
| 687bb8a237 | |||
| e51123a951 | |||
| 92bb12e2e3 | |||
| fd0536bd4b | |||
| 57389a79a1 | |||
| 6cd7bddc37 | |||
| c3c5006daa | |||
| 27a8a57cf5 | |||
| 3bded6fdcc | |||
| c7f31337ce | |||
| fd507f2692 | |||
| 96a39ef9c3 | |||
| 81a8d6c3bf | |||
| d4719208f0 | |||
| c36dce6464 | |||
| 2da4474bb1 | |||
| cab11202c7 | |||
| 21d7d35bb1 | |||
| 0725c663c4 | |||
| ce82239c8b | |||
| 2523008cb6 | |||
| 69212b9ad1 | |||
| 636cb3399b | |||
| 86ca35ce33 | |||
| 675ab31305 | |||
| 83c2d743bc | |||
| 2c87b3d906 | |||
| 05b6159802 | |||
| c56f48c1e3 | |||
| e18e399ce6 | |||
| d66ade4e47 | |||
| 90b045af6d | |||
| 5cccb21175 | |||
| 1a71969403 | |||
| 389a1fbd04 | |||
| ca02ae6183 | |||
| 92446cb048 | |||
| 954ce4533f | |||
| f7b88f9e3b | |||
| 736fe038eb | |||
| abcd257db0 | |||
| c38b5f3cdc | |||
| b649617e04 | |||
| a4e2287101 | |||
| fbb66f3c43 | |||
| fedf90ea78 | |||
| d558d50102 | |||
| 656cb89fe8 | |||
| 1e6ddd250e | |||
| 1de8eee6ea | |||
| 425bba67c5 | |||
| 8b0daf7200 | |||
| 589a373142 | |||
| 0cfc71e4bf | |||
| 92dabe6276 | |||
| d1b61b6bf9 | |||
| 873f2b618b | |||
| 4453070060 | |||
| de40be430b | |||
| 29a6a992f0 | |||
| 0a7d2d6264 | |||
| e09f92f9ee | |||
| 9be1ecc8aa | |||
| 729b19c8da | |||
| a9fffa5180 | |||
| 0069c0e399 | |||
| b6fd38e293 | |||
| 36aa7f82b0 | |||
| d01004d530 | |||
| d85a02feeb | |||
| b82e1dcd62 | |||
| 74c6a2266f | |||
| 9754223f31 | |||
| cfbbac9796 | |||
| fece8955cf | |||
| 170b2afb0e | |||
| ee8af18d0a | |||
| 27386ea04d | |||
| 0d71a8ee50 | |||
| 82a72e0b49 | |||
| 5035c123f0 | |||
| 474b3372d8 | |||
| be87124ada | |||
| aa3032db35 | |||
| a4ead79888 | |||
| 98445afd3e | |||
| 3eb9671640 | |||
| 95fb4e3e8b | |||
| 818015d24a | |||
| e11bd3e813 | |||
| 2a4d64af95 | |||
| d73cb4be2b | |||
| 82752040f8 | |||
| 1bde6d8b9c | |||
| be55d36f67 | |||
| f07724372d | |||
| 5b8d5dd975 | |||
| e36aa065e9 | |||
| 45486ef399 | |||
| 4fedf6f452 | |||
| 702b80ef75 | |||
| a5c7789dbc | |||
| bddef199ff | |||
| fa6fc07009 | |||
| 8d9b44528b | |||
| 1d108d775c | |||
| 7af111ac57 | |||
| 6451f00639 | |||
| 31718d1a4a | |||
| 832b74b66b | |||
| 082802e119 | |||
| efa9c748c5 | |||
| fc8bef5aae | |||
| 441b15ed2f | |||
| 11d1f6e141 | |||
| 0f5b9564c6 | |||
| 0c8a84656a | |||
| 330f91e15b | |||
| 490141a920 | |||
| 1e288b14d0 | |||
| 81df96bf45 | |||
| d1ab5f74a6 | |||
| e43dd03132 | |||
| 2c6d64976f | |||
| 065713cdb6 | |||
| 746d3c97c3 | |||
| 9557fc799e | |||
| 8fcabc5e9f | |||
| 2b4b15f558 | |||
| 057b0b4565 | |||
| 70a2402521 | |||
| de34db3394 | |||
| 0c2ae792ec | |||
| a4c0b92777 | |||
| b9d78135e0 | |||
| 5641c19502 | |||
| 0110dfdb70 | |||
| 140606744b | |||
| 335d175d57 | |||
| 779db9da70 | |||
| 5d29a08ab7 | |||
| 1fe3365e10 | |||
| f0584c88e8 | |||
| c7620dfc48 | |||
| 5d6a945763 | |||
| 4fe5939d0b | |||
| bcaf54d4cb | |||
| 44d43f45cb | |||
| de26ee9383 | |||
| d442462952 | |||
| 558fc9f306 | |||
| 9f0ee219d0 | |||
| 5164116bde | |||
| 02404bc97e | |||
| 0ebdb037b5 | |||
| a8b60c32b3 | |||
| 416621d503 | |||
| b917eb447c | |||
| 2ce3c71b88 | |||
| ca13bfa5f8 | |||
| d8812196f3 | |||
| 4e750bdbe1 | |||
| f59a37b77c | |||
| ea3db93db9 | |||
| 26f2c9fea2 | |||
| 290cc0d1bb | |||
| 78044c062e | |||
| 3a2f653229 | |||
| bbe22e6f36 | |||
| d4474ff0fb | |||
| c7979f1be5 | |||
| ada0b7106e | |||
| c3a5542935 | |||
| 2eebb3388a | |||
| 287c3688fd | |||
| 3948b3993f | |||
| bcacafeb84 | |||
| 2193ddfabe | |||
| 29ae0b7dca | |||
| 904837df12 | |||
| 00c2da444f | |||
| 13d0dde9f4 | |||
| 548f2a960c | |||
| fe4367c580 | |||
| 71803f891d | |||
| 75a38d95f3 | |||
| c89686a2fd | |||
| 398323533a | |||
| a773872cf3 | |||
| 2eb0d55f92 | |||
| 54bd1ad0fa | |||
| 089825d360 | |||
| 333629caff | |||
| d715cd1129 | |||
| 15d6eaf553 | |||
| ae5dfc3bee | |||
| 6ab83b662a | |||
| 52ae6902d2 | |||
| c30adb2671 | |||
| e95d29f446 | |||
| c20bb38b06 | |||
| d0213d275d | |||
| 9a78dad576 | |||
| 880f1aeb66 | |||
| e764eabd97 | |||
| 235f9cf854 | |||
| d10795ecd9 | |||
| a7e45dace0 | |||
| 7e482f798c | |||
| c085bac5d8 | |||
| 653940a0ca | |||
| 417d37b199 | |||
| 3b2107a4f1 | |||
| 7f6d03c02a | |||
| 5fc07d4dd4 | |||
| 3fb9524cbd | |||
| e79703e49b | |||
| b829bd1341 | |||
| 8cbab7525a | |||
| 93b37a89c9 | |||
| 87620b9072 | |||
| 6877b865a7 | |||
| d6b3142a02 | |||
| 14cdb54212 | |||
| 91e7f45a1c | |||
| 709105120c | |||
| 865f26d75c | |||
| 52a4fd3318 | |||
| e70732c9ac | |||
| c6c269f9e4 | |||
| 42ad04cabd | |||
| 2a8eeaf240 | |||
| f7dcff5113 | |||
| 98a81385a6 | |||
| 7bdc277b58 | |||
| f57116d2be | |||
| 85c99f7f80 | |||
| 75081ceac3 | |||
| 65da3ca298 | |||
| 94509c64b9 | |||
| 4f36d94726 | |||
| 05c284b999 | |||
| 635b042690 | |||
| 1cb4a539cc | |||
| 46b87250b2 | |||
| 1a05355e54 | |||
| c81c17d17b | |||
| 7b4f8d31e8 | |||
| 5cef28c5bd | |||
| 6e68da7936 | |||
| 0c130f9596 | |||
| f156f4cb4e | |||
| fa3bfa2ea8 | |||
| ab5c7bb75a | |||
| 81b322cd60 | |||
| e6dd7cd54a | |||
| aa1da7c11a | |||
| 3f74d4d9e5 | |||
| 297d09c5ad | |||
| 07e1dbb4cc | |||
| 3c6618b4fc | |||
| 54db744282 | |||
| 03b751fa13 | |||
| ec342708b2 | |||
| 405591c5d0 | |||
| 7f5e89d489 | |||
| c504f33b1f | |||
| 67af67b92d | |||
| 8644348fc4 | |||
| 00dc226bd2 | |||
| b6b7c3e2e0 | |||
| 246ef348d3 | |||
| 3e9ba1a30a | |||
| 598cde4865 | |||
| fc4a716b4e | |||
| ed5634ff83 | |||
| 884af1ea62 | |||
| 01ad62df16 | |||
| 512a667e44 | |||
| d0e841f7de | |||
| c04641d835 | |||
| f9128d4d45 | |||
| 2026211622 | |||
| 9d0f21a9e5 | |||
| 26adf7d437 | |||
| d2d6f12218 | |||
| b31c0b6a8d | |||
| 472f06c2d1 | |||
| f5ec9870fd | |||
| 66fb9e5f49 | |||
| a323f3aa2c | |||
| fe4786e168 | |||
| ed6a18dae7 | |||
| 83185c8c50 | |||
| 83ae9db02d | |||
| 8bf328ca94 | |||
| 36993cb6f8 | |||
| c854415319 | |||
| aecc1cd979 | |||
| b2f3b0b584 | |||
| c937f5afc7 | |||
| 2d580a26af | |||
| 4a00a3cc1b | |||
| d3935219f2 | |||
| 040788c793 | |||
| 005622307e | |||
| 8ebf95a222 | |||
| 7f596ed315 | |||
| ffa4de6911 | |||
| cb27d4b490 | |||
| bb4910f4e5 | |||
| 89c7f07034 | |||
| b150b2f034 | |||
| 45d6347f5b | |||
| 67d762b6a5 | |||
| faa28f88f9 | |||
| 9c8c7a7812 | |||
| a019956698 | |||
| d70e2b66a3 | |||
| 5d568efac3 | |||
| 08111f1418 | |||
| 45839f227a | |||
| 8814ffeda6 | |||
| d224c4c124 | |||
| 549525fb37 | |||
| 1c8e25beb3 | |||
| eda45c1528 | |||
| 53c38cf714 | |||
| 0e7578043e | |||
| 21f50e0b38 | |||
| 515f00c7cd | |||
| 8057586dc1 | |||
| b101ac7c7f | |||
| 64319937a1 | |||
| 1c0cfd6769 | |||
| f8e17d5285 | |||
| d4385ad8a5 | |||
| da07ce419f | |||
| 714e0206c4 | |||
| 40da82666a | |||
| 79f7ec4672 | |||
| 0f5c69040b | |||
| c9d1c45d97 | |||
| ea8fdb120c | |||
| f6fa830ffe | |||
| 992e50c014 | |||
| bd705d91ba | |||
| 2656394195 | |||
| c8df9e698c | |||
| 19b78a1d2f | |||
| 8039e8baf8 | |||
| 9c5142c73c | |||
| 8e3dcdde17 | |||
| 34023adafb | |||
| 79914e8d08 | |||
| 454fbda581 | |||
| 2c32703e6b | |||
| b561535626 | |||
| 1fc684d995 | |||
| 7595d9fdfd | |||
| 3bf7732a21 | |||
| 71b5aaf8ab | |||
| e1e5347476 | |||
| cdcdb6a2d9 | |||
| ec79104ad2 | |||
| ff083ce684 | |||
| 0f051e322e | |||
| 657a2ae032 | |||
| 0db3570026 | |||
| 0ae39f160a | |||
| b45977c29a | |||
| b7f5740c57 | |||
| 21e23369d3 | |||
| fca598991a | |||
| aa5b909486 | |||
| 0a888cf51a | |||
| e5c164065c | |||
| 8bc241ca14 | |||
| 15beb79631 | |||
| fef1305e41 | |||
| 498cf34999 | |||
| 7cde1fdc4a | |||
| 228fdf0a0d | |||
| fdb5ea0ff4 | |||
| a0e838d1ee | |||
| 30ddf5ec41 | |||
| cfd3b7b3ae | |||
| a6cd532035 | |||
| b1db952fcb | |||
| 51e8bab352 | |||
| 618ec93786 | |||
| a673f9c8ca | |||
| e8c9c2a47d | |||
| aafa5d5f90 | |||
| 8b9c47daf1 | |||
| 4042577c0b | |||
| 6c9f9940e3 | |||
| 8f7b3f29ce | |||
| 6bca7333c9 | |||
| 3dfeeec899 | |||
| 138dc286f6 | |||
| 07cee2aadf | |||
| 1b267813c9 | |||
| 96b5981f8c | |||
| a2fd9559c5 | |||
| 3f06419d47 | |||
| 2aefca3813 | |||
| 844c4bf983 | |||
| 6aa487269c | |||
| 43961c1c18 | |||
| 393ea27fa4 | |||
| febe87508c | |||
| 30db27980c | |||
| 4e768ec50f | |||
| 4467e09426 | |||
| 66b95d52fd | |||
| 1398417829 | |||
| 58dd5e2750 | |||
| 70210f567a | |||
| 49e7dc56e1 | |||
| 72cc586f88 | |||
| 94fa77fcd2 | |||
| 2c0cbdd29e | |||
| 68a503796c | |||
| 48cf28dd7f | |||
| 7e103b7744 | |||
| 79d637c9bf | |||
| 7c8d551fe1 | |||
| 72862c8be8 | |||
| 4f1bb48bf7 | |||
| 15740a6d8a | |||
| 2bc3456400 | |||
| 5a607efa9f | |||
| 1c8163dd82 | |||
| 327a919958 | |||
| a847e66c4f | |||
| 0772d3b3fd | |||
| 61d6b06c56 | |||
| 1534f45236 | |||
| aedc462135 | |||
| 7b55337c5e | |||
| 87bbf6f140 | |||
| 0d8913ea2f | |||
| 387bcc5fa4 | |||
| 5a20242111 | |||
| 196f7d9dc2 | |||
| 954b6df360 | |||
| 8002a56efc | |||
| 7e5ea0cee0 | |||
| 7b42d7252e | |||
| 3254afc756 | |||
| e3553d4c8c | |||
| 7be14ee905 | |||
| fc234314b7 | |||
| cf19363092 | |||
| 589b38c75d | |||
| 90a8f818bf | |||
| 642f57ff6d | |||
| cbccd9e3d0 | |||
| cf7a3e6f70 | |||
| 8993687c37 | |||
| ff1d7b115a | |||
| 98bd5149e9 | |||
| 4efa2e0c6a | |||
| f805036054 | |||
| 3c723c4325 | |||
| 14a83f6b52 | |||
| ff0686670c | |||
| 3198d07553 | |||
| c7e2896326 | |||
| 0db5381a8b | |||
| cb86151deb | |||
| d6c7326467 | |||
| 92c6c45e77 | |||
| c6fff4950d | |||
| 81a8123725 | |||
| d0d3e74d55 | |||
| b54ae272eb | |||
| 3af6d96e6e | |||
| f38b33ea39 | |||
| dd2b0a1595 | |||
| c96fcb7afc | |||
| b805a29259 | |||
| 5450246f06 | |||
| d9a00eeaf7 | |||
| 131ed13df1 | |||
| 5f8d70028a | |||
| c222b702c3 | |||
| de43391e4c | |||
| 547c0b8399 | |||
| fcbb5e46a1 | |||
| 7c5166c8bb | |||
| fab66606b3 | |||
| 1d143f7103 | |||
| 4955fcd12a | |||
| 817e9663fa | |||
| 85ca850453 | |||
| 3baefb2b60 | |||
| ffea5a0e02 | |||
| be55695691 | |||
| ea27c96362 | |||
| 7a73a01999 | |||
| 018dee6c38 | |||
| c7cf2e6f16 | |||
| 9ab9a6e8b0 | |||
| 4aa136189a | |||
| 67ccff3e86 | |||
| 40c09ce26a | |||
| 3e0d4a0bed | |||
| e8a6d38ac6 | |||
| 80159ecca8 | |||
| c82bb730b2 | |||
| 26dad399d5 | |||
| 2689e6d6c0 | |||
| 90d1b68bd6 | |||
| c7c4318c11 | |||
| d6a2e4aee9 | |||
| c6488b58f5 | |||
| c66802af2d | |||
| 18bfcc24ad | |||
| d8a134fe7e | |||
| 989f48c47a | |||
| 111a32b5e8 | |||
| 993ca754b5 | |||
| 381a37fbaa | |||
| 0ca61b4d99 | |||
| 16748a75d5 | |||
| 0e33dfa019 | |||
| 4a2f7ebf87 | |||
| e9f18b79ea | |||
| 66629a591a | |||
| 8f22a358cf | |||
| 1f5f1596e5 | |||
| 339554bdbf | |||
| 9b6b614857 | |||
| e6e99d4239 | |||
| f4ae5125dc | |||
| c3cfbd8474 | |||
| 86dd03c917 | |||
| 49e65c611f | |||
| 6410e34bf3 | |||
| 2db7fee745 | |||
| 4e8908e715 | |||
| 67d8020147 | |||
| b4b9f33b2c | |||
| d091703dc0 | |||
| 509b5291c3 | |||
| 111a0823e9 | |||
| 48bc7a45a9 | |||
| 1eb70d4cfd | |||
| eae63b7c57 | |||
| ec0862f99e | |||
| 79ca6f4acb | |||
| 66a9690dc9 | |||
| 01c65578b0 | |||
| dd462989b5 | |||
| da6ac1626b | |||
| a38ff69cbd | |||
| 70db327eda | |||
| 8c3f86c690 | |||
| b66542cb40 | |||
| 873ad871da | |||
| 889eaaea92 | |||
| d2ce72e4aa | |||
| bcfac02c96 | |||
| 60a2ed48c2 | |||
| 087c0b8253 | |||
| a9a0967a6f | |||
| 7bbaa3806b | |||
| 7f910a13d5 | |||
| 6841c2328e | |||
| abf29bc164 | |||
| ae072929df | |||
| 5d756eb54b | |||
| 9fe5d6655c | |||
| 37b5b22713 | |||
| ee731e4759 | |||
| 0dbe3133cf | |||
| 843219c38b | |||
| 810d5f3c1f | |||
| 4a5bd0db05 | |||
| 0120e4d1f5 | |||
| d199a18a91 | |||
| ffc0981fbc | |||
| 27ca9b027b | |||
| b0ff699b31 | |||
| 3a0178b294 | |||
| 7bd40c94c7 | |||
| d1c497df7f | |||
| e59deb23c2 | |||
| dd3fc90372 | |||
| 89686399f9 | |||
| e8b571590e | |||
| 19294db942 | |||
| f47e4a78d7 | |||
| c58250e1f0 | |||
| 576e60a2b5 | |||
| 3f5499be90 | |||
| 4dcf6e87bc | |||
| 028758c4e0 | |||
| edd6615bcf | |||
| 08854e0ab9 | |||
| 3c919ee5d1 | |||
| fdc6eef921 | |||
| 0c645b6e66 | |||
| 1ba1007261 | |||
| 575416a16d | |||
| 1c33fb4e14 | |||
| cd83a6f209 | |||
| 17638f3d3a | |||
| 61b14b52d9 | |||
| 8dd648f85d | |||
| 256e27cd90 | |||
| 0c3a812825 | |||
| 80f8fd49f1 | |||
| 80c500f618 | |||
| 3dd0783510 | |||
| 77c9a7e2fa | |||
| 027c0f41e5 | |||
| f9fc83bfb0 | |||
| 372bc2d9d6 | |||
| 82606e63c0 | |||
| 3feb3f592c | |||
| dfd6857069 | |||
| b8724ac8c3 | |||
| 1d8515bce0 | |||
| c747ffee5a | |||
| 7d601b45a2 | |||
| 8be886daf6 | |||
| d471d2416d | |||
| f4c00ee0b6 | |||
| 009c131819 | |||
| b6722897a0 | |||
| 1b46278f86 | |||
| 1274f56da8 | |||
| 0f572f4cb3 | |||
| cbe3498125 | |||
| e6ab0b6864 | |||
| 5b3931ecb7 | |||
| ddd70ab8ce | |||
| ba4cc234ae | |||
| 3563a4cc36 | |||
| 0526734ca1 | |||
| f4f8d45a8e | |||
| b3153eed64 | |||
| ba11febad6 | |||
| 0cea8db0f9 | |||
| 8b7572a9e5 | |||
| dd20af4ba0 | |||
| 222ef2f850 | |||
| fc9ac23725 | |||
| 0f426b9c19 | |||
| a7d4710702 | |||
| b1117ed54a | |||
| 7ad4b55ee0 | |||
| 396dc34a84 | |||
| 9b4a31fa6a | |||
| 8c7f976ef5 | |||
| 01f61d3c73 | |||
| 69b4bcbd09 | |||
| bb397fb8d0 | |||
| 17ecf05215 | |||
| e340b3e6fa | |||
| 4ab8677173 | |||
| 343d803d8e | |||
| c643d7edc3 | |||
| a4b37d01ab | |||
| a59eb0c4c7 | |||
| 2dcc3206e1 | |||
| dc9040a68e | |||
| 5160b9fbd6 | |||
| a2af45e1c7 | |||
| 0165ccbaac | |||
| b817cb4a1b | |||
| 584378a32b | |||
| 6d9ef26eca | |||
| 1bc170b069 | |||
| babd5897ae | |||
| 63ec5b5519 | |||
| e5e468a463 | |||
| 6946279f03 | |||
| ee65c9f47d | |||
| fadb1d35b3 | |||
| f92935d93f | |||
| d282045683 | |||
| 129bf53edc | |||
| 6113c388b7 | |||
| 764326ab16 | |||
| 262ad0b51c | |||
| 8cc2b64066 | |||
| ceb4b76cdb | |||
| 80af1fa9e6 | |||
| 844fd4358c | |||
| 79b41954f9 | |||
| 5a4a7814e1 | |||
| c4630aaf7b | |||
| d35ad50254 | |||
| b1cc6f2a9c | |||
| 0d94329940 | |||
| 04150e1c0a | |||
| 385757b54b | |||
| ccfe922c30 | |||
| b3e0546f78 | |||
| aaaf8d7db3 | |||
| b1b2cd088b | |||
| d1ea61debc | |||
| 12cebea29e | |||
| 81a3fdbc29 | |||
| fea4669d82 | |||
| 241f9ed383 | |||
| 3d06ce444c | |||
| 06fed944c9 | |||
| 5d225c2583 | |||
| e626367a06 | |||
| 5c992c3214 | |||
| 5575c83970 | |||
| 6dabad76ba | |||
| 1c656f8b90 | |||
| 51b6fed468 | |||
| f92d918a1e | |||
| 3e290f057f | |||
| 27a9fc32a6 | |||
| 13eb0231ac | |||
| 6089f0aa8e | |||
| b0c4050567 | |||
| 3f9244542d | |||
| 70b6098ee5 | |||
| 1656e91296 | |||
| 5b7df9c175 | |||
| 8d8600aaa8 | |||
| 54d136cc6a | |||
| 661293c189 | |||
| d10d42e206 | |||
| b780eab5f5 | |||
| 315e43746b | |||
| 526c48450b | |||
| abd2dcf2e8 | |||
| 87defa569c | |||
| b4db5518db | |||
| a50b635424 | |||
| 40a794f624 | |||
| 6876790374 | |||
| 586725a15c | |||
| 34300a19a6 | |||
| 11def7e42a | |||
| 4f3fb3766e | |||
| cbc3eb9453 | |||
| c31bc0266a | |||
| b6176d7629 | |||
| bc2e78db39 | |||
| fdda8985de | |||
| be2f0aa435 | |||
| 513a5b49c1 | |||
| 0c50ede129 | |||
| d5a17f9e6a | |||
| 4b09a0a27f | |||
| cba38f6e12 | |||
| a672043e2e | |||
| e1c6d8a2d0 | |||
| 9041602cfd | |||
| bcbefaaa35 | |||
| 925edef0a5 | |||
| 90c54fd9e0 | |||
| 95df56cc5c | |||
| ebced940d4 | |||
| b21db8da6b | |||
| 55c76cb89c | |||
| 11d0daa59a | |||
| 22764abd38 | |||
| a7414047ee | |||
| c4164c66e2 | |||
| a90d1e68ee | |||
| 7aac1460c3 | |||
| 1cc1d1c03c | |||
| b421798a1b | |||
| f876ac99b0 | |||
| 7008a408ca | |||
| 4075be7849 | |||
| 98ef9aa479 | |||
| 25689efc99 | |||
| a8a45d7f75 | |||
| a3ef3fb5cf | |||
| b928bb46c7 | |||
| d782655cb4 | |||
| f126f9f932 | |||
| 5b148b7ed9 | |||
| de62abf0e7 | |||
| f9e29ef041 | |||
| 11255a1ecf | |||
| 3a78cb9929 | |||
| b2f8ee3836 | |||
| 3681d89a61 | |||
| 4ea3edd59e | |||
| 1291e98e82 | |||
| 09847ce074 | |||
| 18ee87daff | |||
| 2b89fba7eb | |||
| 41d9c3ac83 | |||
| a705182b85 | |||
| f8b99b81a2 | |||
| ffeede38af | |||
| 18c9c4a166 | |||
| 3db216f515 | |||
| 4a7018ac26 | |||
| 0e859d32ee | |||
| 5840247f3e | |||
| 74a1873e58 | |||
| f984472257 | |||
| e9a4b26595 | |||
| 617cc13e29 | |||
| 3e0aabcd85 | |||
| 027991b253 | |||
| 4bda5b2167 | |||
| c1e3e2ee1f | |||
| e8b5fcf3ee | |||
| 88478c1482 | |||
| eb937737c2 | |||
| e646f01c2a | |||
| bfd31e8490 | |||
| 41b5e57d39 | |||
| f36b6e3824 | |||
| 32e5a671c1 | |||
| de4cd0a73d | |||
| c2d43fed4b | |||
| 1f4f15757d | |||
| d6b91b38f0 | |||
| 62854978bf | |||
| 12116a89f4 | |||
| 682cb6b71c | |||
| 06c1e0929b | |||
| 0cfce29847 | |||
| 20308345f2 | |||
| d6fb26d060 | |||
| 4b66af7cd9 | |||
| 6024f1dc4a | |||
| 0b86de401f | |||
| 57d8d48046 | |||
| 03ed8edbd3 | |||
| 17d88900a1 | |||
| da2936bab6 | |||
| 4b4c4651ba | |||
| 6e2ac1c089 | |||
| 304ef494fd | |||
| c46a2a9a39 | |||
| 84fd3b250d | |||
| 7d9183d022 | |||
| d32a3d01b9 | |||
| fc42ade63f | |||
| 310ef2be7e | |||
| 04f0245a95 | |||
| a5ea74d035 | |||
| 99678c1635 | |||
| 77f163144f | |||
| 5dde5bd3f7 | |||
| 64c4933645 | |||
| 7eebfb35ce | |||
| 1c6028abcf | |||
| 28bb4856be | |||
| 41ad0aea2b | |||
| 02fe704769 | |||
| e85b441f60 | |||
| 3f83e7463c | |||
| 4220ec11e7 | |||
| 7879e2d12d | |||
| d16730f0cf | |||
| 35f01fc0c8 | |||
| 36b26ae9f5 | |||
| 3ec6adfc0d | |||
| 96717d3dbc | |||
| 49fa01f209 | |||
| fe9d443100 | |||
| 3dec43d8d4 | |||
| 5ab2943c3a | |||
| 6e8b0eeca9 | |||
| d0c4dfca97 | |||
| f4a11ed328 | |||
| b2971cf5fb | |||
| f97827ec76 | |||
| f230a2a94d |
@@ -0,0 +1,11 @@
|
||||
#
|
||||
# http://editorconfig.org
|
||||
#
|
||||
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: greper
|
||||
buy_me_a_coffee: greper
|
||||
custom: ['https://afdian.com/a/greper']
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: Plugin Apply
|
||||
about: 部署插件申请支持
|
||||
title: "[Plugin] "
|
||||
labels: feature
|
||||
---
|
||||
|
||||
> > 感谢您支持certd,请按如下规范提交issue
|
||||
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
|
||||
|
||||
# 新部署插件申请支持
|
||||
|
||||
## 1. 需求描述
|
||||
`请在此处简要描述你的需求`
|
||||
|
||||
|
||||
## 2. 要部署证书应用的信息
|
||||
|
||||
1. 应用名称:
|
||||
|
||||
|
||||
2. 应用网址/项目地址/官方网站:
|
||||
|
||||
|
||||
3. 管理证书界面截图(或者手动部署证书方式介绍及截图):
|
||||
|
||||
|
||||
4. 是否有API接口,接口地址:
|
||||
|
||||
|
||||
5. 如果没有API接口,网页登录是否需要验证码:
|
||||
|
||||
|
||||
6. 是否可以提供测试账号?(如果可以请留下联系方式或者加作者好友)
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
---
|
||||
name: DNS Provider Apply
|
||||
about: 域名提供商申请支持
|
||||
title: "[DNS] "
|
||||
labels: feature
|
||||
---
|
||||
|
||||
|
||||
> 感谢您支持certd,请按如下规范提交issue
|
||||
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
|
||||
|
||||
# 新域名提供商支持申请
|
||||
|
||||
## 1. 基本信息
|
||||
请填写如下内容:
|
||||
|
||||
1. 域名提供商名称:
|
||||
|
||||
|
||||
2. 管理页面地址:
|
||||
|
||||
|
||||
3. 是否有API接口,接口地址:
|
||||
|
||||
|
||||
4. 如果没有API接口,网页登录是否有验证码:
|
||||
|
||||
|
||||
5. 是否可以提供测试账号?(如果可以请留下联系方式或者加作者好友)
|
||||
|
||||
|
||||
|
||||
## 2. 截图
|
||||
|
||||
`域名管理页面截图`
|
||||
|
||||
@@ -1,21 +1,28 @@
|
||||
> 感谢您支持certd,请按如下规范提交issue
|
||||
---
|
||||
name: Bug Report
|
||||
about: 错误或问题报告
|
||||
title: "[BUG] "
|
||||
labels: bug
|
||||
---
|
||||
|
||||
|
||||
> 感谢您支持certd,请按如下规范提交issue
|
||||
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
|
||||
|
||||
|
||||
## 一、问题描述
|
||||
# bug提交
|
||||
## 1、问题描述
|
||||
`请在此处简要描述你所遇到的问题,必要时请贴出相关截图辅助理解和定位`
|
||||
|
||||
### 复现步骤
|
||||
### 2、复现步骤
|
||||
`请描述复现问题的详细步骤`
|
||||
`如果非示例页面的问题,最好能提供最小复现示例的代码、或者仓库链接`
|
||||
|
||||
|
||||
### 报错截图
|
||||
### 3.报错截图
|
||||
`请贴出报错日志截图`
|
||||
|
||||
### 效果截图
|
||||
### 4、效果截图
|
||||
`请贴出效果截图`
|
||||
#### 1. 期望效果
|
||||
|
||||
#### 2. 实际效果
|
||||
#### 4.1. 期望效果
|
||||
|
||||
#### 4.2. 实际效果
|
||||
@@ -0,0 +1,24 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: 新需求、新特性申请支持
|
||||
title: "[Feature] "
|
||||
labels: feature
|
||||
---
|
||||
|
||||
> > 感谢您支持certd,请按如下规范提交issue
|
||||
> 如果有条件,请尽量在[github上提交](https://github.com/certd/certd/issues)
|
||||
|
||||
|
||||
# 新特性申请
|
||||
>注意:这里仅供如果是要申请新的部署插件,请提交插件申请
|
||||
|
||||
## 1. 需求描述,需求背景
|
||||
`请在此处简要描述你所遇到的问题,必要时请贴出相关截图辅助理解`
|
||||
|
||||
|
||||
## 2. 期望效果
|
||||
`必要时可以截图描述你的期望效果`
|
||||
|
||||
|
||||
## 3. 你的解决方案
|
||||
`如果你有解决方案,请描述你的方案`
|
||||
@@ -1,15 +1,16 @@
|
||||
name: build-image
|
||||
on:
|
||||
push:
|
||||
branches: ['v2']
|
||||
branches: ['v2-dev']
|
||||
paths:
|
||||
- "build.trigger"
|
||||
- "trigger/build.trigger"
|
||||
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
build-certd-image:
|
||||
@@ -17,6 +18,9 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
|
||||
- name: get_certd_version
|
||||
id: get_certd_version
|
||||
@@ -40,7 +44,7 @@ jobs:
|
||||
# cache: 'npm'
|
||||
# working-directory: ./packages/ui/certd-client
|
||||
- run: |
|
||||
npm install -g pnpm@8.15.7
|
||||
npm install -g pnpm
|
||||
pnpm install
|
||||
npm run build
|
||||
working-directory: ./packages/ui/certd-client
|
||||
@@ -58,6 +62,13 @@ jobs:
|
||||
username: ${{ secrets.aliyun_cs_username }}
|
||||
password: ${{ secrets.aliyun_cs_password }}
|
||||
|
||||
- name: Login to GitHub Packages
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
@@ -71,31 +82,4 @@ jobs:
|
||||
push: true
|
||||
context: ./packages/ui/
|
||||
tags: |
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}
|
||||
greper/certd:latest
|
||||
greper/certd:${{steps.get_certd_version.outputs.result}}
|
||||
|
||||
- name: Build armv7
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
platforms: linux/arm/v7
|
||||
push: true
|
||||
context: ./packages/ui/
|
||||
tags: |
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}-armv7
|
||||
greper/certd:armv7
|
||||
greper/certd:${{steps.get_certd_version.outputs.result}}-armv7
|
||||
|
||||
- name: Build agent
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
context: ./packages/ui/agent/
|
||||
tags: |
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:latest
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:${{steps.get_certd_version.outputs.result}}
|
||||
greper/certd-agent:latest
|
||||
greper/certd-agent:${{steps.get_certd_version.outputs.result}}
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
name: deploy-demo
|
||||
on:
|
||||
push:
|
||||
branches: ['v2']
|
||||
branches: ['v2-dev']
|
||||
paths:
|
||||
- "deploy.trigger"
|
||||
- "trigger/deploy.trigger"
|
||||
workflow_run:
|
||||
workflows: [ "build-image" ]
|
||||
types:
|
||||
- completed
|
||||
|
||||
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
@@ -18,9 +19,13 @@ permissions:
|
||||
jobs:
|
||||
deploy-certd-demo:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
ref: v2-dev
|
||||
- name: get_certd_version
|
||||
id: get_certd_version
|
||||
uses: actions/github-script@v6
|
||||
@@ -37,11 +42,11 @@ jobs:
|
||||
- uses: GuillaumeFalourd/wait-sleep-action@v1
|
||||
with:
|
||||
time: '10' # for 60 seconds
|
||||
- name: Send HTTP request
|
||||
id: request
|
||||
- name: deploy-certd-demo
|
||||
uses: tyrrrz/action-http-request@master
|
||||
with:
|
||||
url: http://flow-openapi.aliyun.com/pipeline/webhook/lzCzlGrLCOHQaTMMt0mG
|
||||
# 通过webhook 触发 certd-demo来部署
|
||||
url: ${{ secrets.WEBHOOK_CERTD_DEMO }}
|
||||
method: POST
|
||||
headers: |
|
||||
Content-Type: application/json
|
||||
@@ -51,5 +56,3 @@ jobs:
|
||||
}
|
||||
retry-count: 3
|
||||
retry-delay: 5000
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
name: publish-atomgit
|
||||
on:
|
||||
push:
|
||||
branches: ['v2-dev']
|
||||
paths:
|
||||
- "trigger/publish.trigger"
|
||||
workflow_run:
|
||||
workflows: [ "build-image-for-release" ]
|
||||
types:
|
||||
- completed
|
||||
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
publish-atomgit:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
- name: get_certd_version
|
||||
id: get_certd_version
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const pnpmWorkspace = "./pnpm-workspace.yaml";
|
||||
fs.unlinkSync(pnpmWorkspace)
|
||||
const jsonFilePath = "./packages/ui/certd-server/package.json";
|
||||
const jsonContent = fs.readFileSync(jsonFilePath, 'utf-8');
|
||||
const pkg = JSON.parse(jsonContent)
|
||||
console.log("certd_version:",pkg.version);
|
||||
return pkg.version
|
||||
- run: |
|
||||
npm install -g pnpm
|
||||
pnpm install
|
||||
npm run build
|
||||
working-directory: ./packages/ui/certd-client
|
||||
|
||||
- name: publish_to_atomgit
|
||||
id: publish_to_atomgit
|
||||
run: |
|
||||
rootDir=$(pwd)
|
||||
rm -rf ./packages/ui/certd-client/dist/**/*.gz
|
||||
cd ./packages/ui/certd-client/dist && zip -r ../ui.zip .
|
||||
cd $rootDir
|
||||
export ATOMGIT_TOKEN=${{ secrets.ATOMGIT_TOKEN }}
|
||||
pnpm install
|
||||
npm run publish_to_atomgit
|
||||
working-directory: ./
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
name: publish-gitee
|
||||
on:
|
||||
push:
|
||||
branches: ['v2-dev']
|
||||
paths:
|
||||
- "trigger/publish.trigger"
|
||||
workflow_run:
|
||||
workflows: [ "build-image-for-release" ]
|
||||
types:
|
||||
- completed
|
||||
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
publish-gitee:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
|
||||
- name: publish_to_gitee
|
||||
id: publish_to_gitee
|
||||
run: |
|
||||
export GITEE_TOKEN=${{ secrets.GITEE_TOKEN }}
|
||||
rm -rf ./pnpm*.yaml
|
||||
npm install -g pnpm
|
||||
pnpm install
|
||||
npm run publish_to_gitee
|
||||
working-directory: ./
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
name: publish-github
|
||||
on:
|
||||
push:
|
||||
branches: ['v2-dev']
|
||||
paths:
|
||||
- "trigger/publish.trigger"
|
||||
workflow_run:
|
||||
workflows: [ "build-image-for-release" ]
|
||||
types:
|
||||
- completed
|
||||
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
publish-github:
|
||||
runs-on: ubuntu-latest
|
||||
if: ${{ github.event.workflow_run.conclusion == 'success' }}
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
|
||||
- name: publish_to_github
|
||||
id: publish_to_github
|
||||
run: |
|
||||
export GITHUB_TOKEN=${{ secrets.GH_TOKEN }}
|
||||
rm -rf ./pnpm*.yaml
|
||||
npm install -g pnpm
|
||||
pnpm install
|
||||
npm run publish_to_github
|
||||
working-directory: ./
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
name: build-image-for-release
|
||||
on:
|
||||
push:
|
||||
branches: ['v2-dev']
|
||||
paths:
|
||||
- "trigger/release.trigger"
|
||||
# workflow_run:
|
||||
# workflows: [ "deploy-demo" ]
|
||||
# types:
|
||||
# - completed
|
||||
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
jobs:
|
||||
build-certd-image:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout Code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
|
||||
- name: get_certd_version
|
||||
id: get_certd_version
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
result-encoding: string
|
||||
script: |
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const pnpmWorkspace = "./pnpm-workspace.yaml";
|
||||
fs.unlinkSync(pnpmWorkspace)
|
||||
const jsonFilePath = "./packages/ui/certd-server/package.json";
|
||||
const jsonContent = fs.readFileSync(jsonFilePath, 'utf-8');
|
||||
const pkg = JSON.parse(jsonContent)
|
||||
console.log("certd_version:",pkg.version);
|
||||
return pkg.version
|
||||
# - name: Use Node.js
|
||||
# uses: actions/setup-node@v4
|
||||
# with:
|
||||
# node-version: 18
|
||||
# cache: 'npm'
|
||||
# working-directory: ./packages/ui/certd-client
|
||||
- run: |
|
||||
npm install -g pnpm
|
||||
pnpm install
|
||||
npm run build
|
||||
working-directory: ./packages/ui/certd-client
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Login to aliyun container Registry
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: registry.cn-shenzhen.aliyuncs.com
|
||||
username: ${{ secrets.aliyun_cs_username }}
|
||||
password: ${{ secrets.aliyun_cs_password }}
|
||||
|
||||
- name: Login to GitHub Packages
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Login to Docker Hub
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.dockerhub_username }}
|
||||
password: ${{ secrets.dockerhub_password }}
|
||||
|
||||
- name: Build default platforms
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
context: ./packages/ui/
|
||||
tags: |
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}
|
||||
greper/certd:latest
|
||||
greper/certd:${{steps.get_certd_version.outputs.result}}
|
||||
ghcr.io/${{ github.repository }}:latest
|
||||
ghcr.io/${{ github.repository }}:${{steps.get_certd_version.outputs.result}}
|
||||
- name: Build armv7
|
||||
uses: docker/build-push-action@v6
|
||||
with:
|
||||
platforms: linux/arm/v7
|
||||
push: true
|
||||
context: ./packages/ui/
|
||||
tags: |
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7
|
||||
registry.cn-shenzhen.aliyuncs.com/handsfree/certd:${{steps.get_certd_version.outputs.result}}-armv7
|
||||
greper/certd:armv7
|
||||
greper/certd:${{steps.get_certd_version.outputs.result}}-armv7
|
||||
ghcr.io/${{ github.repository }}:armv7
|
||||
ghcr.io/${{ github.repository }}:${{steps.get_certd_version.outputs.result}}-armv7
|
||||
|
||||
# - name: Build agent
|
||||
# uses: docker/build-push-action@v6
|
||||
# with:
|
||||
# platforms: linux/amd64,linux/arm64
|
||||
# push: true
|
||||
# context: ./packages/ui/agent/
|
||||
# tags: |
|
||||
# registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:latest
|
||||
# registry.cn-shenzhen.aliyuncs.com/handsfree/certd-agent:${{steps.get_certd_version.outputs.result}}
|
||||
# greper/certd-agent:latest
|
||||
# greper/certd-agent:${{steps.get_certd_version.outputs.result}}
|
||||
- name: deploy-certd-doc
|
||||
uses: tyrrrz/action-http-request@master
|
||||
with:
|
||||
url: ${{ secrets.WEBHOOK_CERTD_DOC }}
|
||||
method: POST
|
||||
body: |
|
||||
{
|
||||
"CERTD_VERSION": "1.0.0"
|
||||
}
|
||||
headers: |
|
||||
Content-Type: application/json
|
||||
retry-count: 3
|
||||
retry-delay: 5000
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
name: sync-to-atomgit-dev
|
||||
on:
|
||||
push:
|
||||
branches: ['v2-dev']
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
sync:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout work repo # 1. 检出当前仓库(certd-sync-work)
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
- name: Set git user # 2. 给git命令设置用户名和邮箱,↙↙↙ 改成你的name和email
|
||||
run: |
|
||||
git config --global user.name "xiaojunnuo"
|
||||
git config --global user.email "xiaojunnuo@qq.com"
|
||||
|
||||
- name: Set git token # 3. 给git命令设置token,用于push到目标仓库
|
||||
uses: de-vri-es/setup-git-credentials@v2
|
||||
with: # token 格式为: username:password
|
||||
credentials: https://greper:${{secrets.ATOMGIT_TOKEN}}@atomgit.com
|
||||
|
||||
- name: push to atomgit # 4. 执行同步
|
||||
run: |
|
||||
git remote add upstream https://atomgit.com/certd/certd
|
||||
git push --set-upstream upstream v2-dev
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
name: sync-to-atomgit
|
||||
on:
|
||||
push:
|
||||
branches: ['v2']
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
sync:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout work repo # 1. 检出当前仓库(certd-sync-work)
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
- name: Set git user # 2. 给git命令设置用户名和邮箱,↙↙↙ 改成你的name和email
|
||||
run: |
|
||||
git config --global user.name "xiaojunnuo"
|
||||
git config --global user.email "xiaojunnuo@qq.com"
|
||||
|
||||
- name: Set git token # 3. 给git命令设置token,用于push到目标仓库
|
||||
uses: de-vri-es/setup-git-credentials@v2
|
||||
with: # token 格式为: username:password
|
||||
credentials: https://greper:${{secrets.ATOMGIT_TOKEN}}@atomgit.com
|
||||
|
||||
- name: push to atomgit # 4. 执行同步
|
||||
run: |
|
||||
git remote add upstream https://atomgit.com/certd/certd
|
||||
git push --set-upstream upstream v2
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
name: sync-to-gitee-dev
|
||||
on:
|
||||
push:
|
||||
branches: ['v2-dev']
|
||||
# schedule:
|
||||
# - # 国际时间 19:17 执行,北京时间3:17 ↙↙↙ 改成你想要每天自动执行的时间
|
||||
# - cron: '17 19 * * *'
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
sync:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout work repo # 1. 检出当前仓库(certd-sync-work)
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
- name: Set git user # 2. 给git命令设置用户名和邮箱,↙↙↙ 改成你的name和email
|
||||
run: |
|
||||
git config --global user.name "xiaojunnuo"
|
||||
git config --global user.email "xiaojunnuo@qq.com"
|
||||
|
||||
- name: Set git token # 3. 给git命令设置token,用于push到目标仓库
|
||||
uses: de-vri-es/setup-git-credentials@v2
|
||||
with: # token 格式为: username:password
|
||||
credentials: https://${{secrets.PUSH_TOKEN_GITEE}}@gitee.com
|
||||
|
||||
- name: push to gitee # 4. 执行同步
|
||||
run: |
|
||||
git remote add upstream https://gitee.com/certd/certd
|
||||
git push --set-upstream upstream v2-dev
|
||||
|
||||
@@ -13,9 +13,10 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout work repo # 1. 检出当前仓库(certd-sync-work)
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
lfs: true
|
||||
- name: Set git user # 2. 给git命令设置用户名和邮箱,↙↙↙ 改成你的name和email
|
||||
run: |
|
||||
git config --global user.name "xiaojunnuo"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
./packages/core/lego
|
||||
# IntelliJ project files
|
||||
.vscode/
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
yarn-error.log
|
||||
@@ -17,11 +16,12 @@ gen
|
||||
/test/*.private.*
|
||||
|
||||
/*.log
|
||||
nohup.out
|
||||
|
||||
/packages/ui/*/.idea
|
||||
/packages/ui/*/node_modules
|
||||
/packages/*/node_modules
|
||||
/pnpm-lock.yaml
|
||||
#/pnpm-lock.yaml
|
||||
|
||||
|
||||
tsconfig.tsbuildinfo
|
||||
@@ -29,3 +29,6 @@ test/**/*.js
|
||||
/packages/ui/certd-server/data/db.sqlite
|
||||
/packages/ui/certd-server/data/keys.yaml
|
||||
/packages/pro/
|
||||
test.js
|
||||
.history
|
||||
/logs
|
||||
@@ -1,2 +1,6 @@
|
||||
link-workspace-packages=true
|
||||
link-workspace-packages=deep
|
||||
prefer-workspace-packages=true
|
||||
better_sqlite3_binary_host=https://registry.npmmirror.com/-/binary/better-sqlite3
|
||||
better_sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/better-sqlite3
|
||||
better-sqlite3_binary_host=https://registry.npmmirror.com/-/binary/better-sqlite3
|
||||
better-sqlite3_binary_host_mirror=https://registry.npmmirror.com/-/binary/better-sqlite3
|
||||
@@ -0,0 +1,83 @@
|
||||
{
|
||||
// 使用 IntelliSense 了解相关属性。
|
||||
// 悬停以查看现有属性的描述。
|
||||
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
{
|
||||
"name": "client",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-client",
|
||||
"runtimeExecutable": "pnpm",
|
||||
"runtimeArgs": ["dev"],
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "server",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||
"runtimeExecutable": "pnpm",
|
||||
"runtimeArgs": ["dev"],
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "server-mysql",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||
"runtimeExecutable": "pnpm",
|
||||
"runtimeArgs": ["dev-mysql"],
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "server-pg",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||
"runtimeExecutable": "pnpm",
|
||||
"runtimeArgs": ["dev-pg"],
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "server-pgpl",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||
"runtimeExecutable": "pnpm",
|
||||
"runtimeArgs": ["dev-pgpl"],
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "server-common",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||
"runtimeExecutable": "pnpm",
|
||||
"runtimeArgs": ["dev-commpro"],
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen"
|
||||
},
|
||||
{
|
||||
"name": "server-local-plus",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-server",
|
||||
"runtimeExecutable": "npm",
|
||||
"runtimeArgs": ["run", "dev-localplus"],
|
||||
"console": "integratedTerminal",
|
||||
"internalConsoleOptions": "neverOpen",
|
||||
"env": {
|
||||
"plus_use_prod": "false",
|
||||
"PLUS_SERVER_BASE_URL": "http://127.0.0.1:11007"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"eslint.debug": false,
|
||||
"eslint.format.enable": true,
|
||||
"typescript.tsc.autoDetect": "watch",
|
||||
"git.scanRepositories": [
|
||||
"./packages/pro"
|
||||
],
|
||||
"editor.defaultFormatter": "dbaeumer.vscode-eslint",
|
||||
"[typescript]": {
|
||||
"editor.defaultFormatter": "vscode.typescript-language-features"
|
||||
},
|
||||
"editor.tabSize": 2,
|
||||
"explorer.autoReveal": false,
|
||||
"[javascript]": {
|
||||
"editor.defaultFormatter": "vscode.typescript-language-features"
|
||||
},
|
||||
"[less]": {
|
||||
"editor.defaultFormatter": "vscode.css-language-features"
|
||||
},
|
||||
"scm.repositories.visible": 9,
|
||||
"scm.repositories.explorer": false,
|
||||
"scm.repositories.selectionMode": "multiple",
|
||||
"scm.repositories.sortOrder": "discovery time"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "启动Client",
|
||||
"type": "shell",
|
||||
"command": "npm",
|
||||
"args": ["run", "dev"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-client"
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "shared"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "启动Server",
|
||||
"type": "shell",
|
||||
"command": "npm",
|
||||
"args": ["run", "dev"],
|
||||
"options": {
|
||||
"cwd": "${workspaceFolder}/packages/ui/certd-server"
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "shared"
|
||||
}
|
||||
},
|
||||
{
|
||||
"label": "同时启动Client和Server",
|
||||
"dependsOn": ["启动Client", "启动Server"],
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true
|
||||
},
|
||||
"problemMatcher": []
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,103 +1,103 @@
|
||||
# Certd
|
||||
|
||||
Certd 是一个免费全自动申请和自动部署更新SSL证书的工具。
|
||||
后缀d取自linux守护进程的命名风格,意为证书守护进程。
|
||||
中文 | [English](./README_en.md)
|
||||
|
||||
关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签
|
||||
Certd® 是一个免费的全自动证书管理系统,让你的网站证书永不过期。
|
||||
后缀d取自linux守护进程的命名风格,意为证书守护进程
|
||||
|
||||
|
||||
>首创流水线申请部署证书模式,已被多个项目“借鉴”,被抄也是一种成功。
|
||||
|
||||
> 关于证书续期:
|
||||
>* 实际上没有办法不改变证书文件本身情况下直接续期或者续签。
|
||||
>* 我们所说的续期,其实就是按照全套流程重新申请一份新证书,然后重新部署上去。
|
||||
>* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
|
||||
|
||||
|
||||
> 流水线数量现已调整为无限制,欢迎大家使用
|
||||
|
||||
|
||||
|官方开源地址: | |
|
||||
| ---- | ---- |
|
||||
| [Github](https://github.com/certd/certd)|  |
|
||||
| [Gitee](https://gitee.com/certd/certd) |  |
|
||||
| [AtomGit](https://atomgit.com/certd/certd) | |
|
||||
|
||||
|
||||
## 一、特性
|
||||
本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。
|
||||
|
||||
* 全自动申请证书(支持所有注册商注册的域名)
|
||||
* 全自动部署更新证书(目前支持部署到主机、部署到阿里云、腾讯云等,目前已支持30+部署插件)
|
||||
* 支持通配符域名/泛域名,支持多个域名打到一个证书上
|
||||
* 邮件通知
|
||||
* 私有化部署,保障数据安全
|
||||
* 免费、免费、免费([阿里云单个通配符域名证书最便宜也要1800/年](https://yundun.console.aliyun.com/?p=cas#/certExtend/buy/cn-hangzhou))
|
||||
* **全自动申请证书**: 支持所有注册商注册的域名,支持DNS-01、HTTP-01、CNAME代理等多种域名验证方式
|
||||
* **全自动部署更新证书**: 目前支持部署到主机、阿里云、腾讯云等110+部署插件
|
||||
* **多种证书格式**: 支持pem、pfx、der、jks、p7b
|
||||
* **免费通配符域名/泛域名证书**: 支持多个域名打到一个证书上
|
||||
* **多种通知方式**: 邮件通知、webhook通知、企微、钉钉、飞书、anpush等多种通知方式
|
||||
* **私有化部署**: 数据保存本地,安装简单快捷,镜像由Github Actions构建,过程公开透明
|
||||
* **多重安全保障**: 授权加密,站点隐藏,2FA,密码防爆破等多重安全保障
|
||||
* **多数据库支持**:支持SQLite、PostgreSQL、MySQL
|
||||
* **开放接口支持**: 提供RESTful API接口,方便集成到其他系统
|
||||
* **站点证书监控**: 定时监控网站证书的过期时间
|
||||
* **多用户管理**: 用户可以管理自己的证书流水线
|
||||
* **多语言支持**: 中英双语切换
|
||||
* **无忧升级**: 版本向下兼容
|
||||
|
||||

|
||||
|
||||
## 二、在线体验
|
||||
|
||||
官方Demo地址,自助注册后体验
|
||||
|
||||
https://certd.handsfree.work/
|
||||
https://certd.handfree.work/
|
||||
|
||||
> 注意数据将不定期清理,不定期停止定时任务,生产使用请自行部署
|
||||
> 包含敏感信息,务必自己本地部署进行生产使用
|
||||
|
||||
## 三、使用教程
|
||||
本案例演示,如何配置自动申请证书,并部署到阿里云CDN,然后快要到期前自动更新证书并重新部署
|
||||

|
||||
|
||||

|
||||

|
||||

|
||||
## 三、使用教程
|
||||
|
||||
仅需3步,让你的证书永不过期
|
||||
|
||||
### 1. 创建证书流水线
|
||||

|
||||
|
||||
> 添加成功后,就可以直接运行流水线申请证书了
|
||||
|
||||
### 2. 添加部署任务
|
||||
当然我们一般需要把证书部署到应用上,certd支持海量的部署插件,您可以根据自身实际情况进行选择,比如部署到Nginx、阿里云、腾讯云、K8S、CDN、宝塔、1Panel等等
|
||||
|
||||
此处演示部署证书到主机的nginx上
|
||||

|
||||
|
||||
如果目前的部署插件都无法满足,您也可以手动下载,然后自行部署
|
||||

|
||||

|
||||
|
||||
### 3. 定时运行
|
||||

|
||||
|
||||
|
||||
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||
-------> [点我查看详细使用步骤演示](./step.md) <--------
|
||||
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
||||
|
||||
当前支持的部署插件列表
|
||||

|
||||
更多教程请访问官方文档 [certd.docmirror.cn](https://certd.docmirror.cn/guide/)
|
||||
|
||||
|
||||
|
||||
## 四、私有化部署
|
||||
|
||||
由于证书、授权信息等属于高度敏感数据,请务必私有化部署,保障数据安全
|
||||
由于证书、授权信息等属于高度敏感数据,请务必私有化部署,保障数据安全
|
||||
|
||||
### 4.1 宝塔面板一键部署
|
||||
您可以根据实际情况从如下方式中选择一种方式进行私有化部署:
|
||||
|
||||
1. 安装宝塔面板,前往 [宝塔面板](https://www.bt.cn/u/CL3JHS) 官网,选择9.2.0以上正式版的脚本下载安装
|
||||
1. 【推荐】[Docker方式部署 ](https://certd.docmirror.cn/guide/install/docker/)
|
||||
2. 【推荐】[宝塔面板方式部署 ](https://certd.docmirror.cn/guide/install/docker/)
|
||||
3. 【推荐】[1Panel面板方式部署](https://certd.docmirror.cn/guide/install/1panel/)
|
||||
4. 【推荐】[雨云一键部署](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2) : 首充翻倍,每月仅需2.2元
|
||||
[<img src="https://rainyun-apps.cn-nb1.rains3.com/materials/deploy-on-rainyun-cn.svg">](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2)
|
||||
5. 【不推荐】[源码方式部署 ](https://certd.docmirror.cn/guide/install/source/)
|
||||
|
||||
2. 安装后登录宝塔面板,在菜单栏中点击 Docker,首次进入会提示安装Docker服务,点击立即安装,按提示完成安装
|
||||
|
||||
3. 安装完成后在应用商店中找到`certd`(要先点右上角更新应用),点击安装,配置域名等基本信息即可完成安装
|
||||
|
||||
### 4.2 宝塔面板容器编排部署
|
||||
|
||||
[宝塔面板容器编排部署教程](./doc/deploy/baota/baota.md)
|
||||
|
||||
### 4.3 Docker部署
|
||||
#### 1. 安装docker、docker-compose
|
||||
|
||||
1.1 准备一台云服务器
|
||||
* 【阿里云】云服务器2核2G,新老用户同享,99元/年,续费同价!【 [立即购买](https://www.aliyun.com/benefit?scm=20140722.M_10244282._.V_1&source=5176.11533457&userCode=qya11txb )】
|
||||
* 【腾讯云】云服务器2核2G,新老用户同享,99元/年,续费同价!【 [立即购买](https://cloud.tencent.com/act/cps/redirect?redirect=6094&cps_key=b3ef73330335d7a6efa4a4bbeeb6b2c9&from=console)】
|
||||
|
||||
1.2 安装docker
|
||||
|
||||
https://docs.docker.com/engine/install/
|
||||
选择对应的操作系统,按照官方文档执行命令即可
|
||||
|
||||
#### 2. 运行certd
|
||||
|
||||
[docker-compose.yaml 下载](https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml)
|
||||
|
||||
当前版本号: 
|
||||
|
||||
```bash
|
||||
# 随便创建一个目录
|
||||
mkdir certd
|
||||
# 进入目录
|
||||
cd certd
|
||||
# 下载docker-compose.yaml文件,或者手动下载放到certd目录下
|
||||
wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
|
||||
|
||||
# 可以根据需要修改里面的配置
|
||||
# 1.修改镜像版本号【可选】
|
||||
# 2.配置数据保存路径【可选】
|
||||
# 3.修改端口号【可选】
|
||||
vi docker-compose.yaml # 【可选】
|
||||
|
||||
# 启动certd
|
||||
docker compose up -d
|
||||
|
||||
```
|
||||
> 如果提示 没有compose命令,请安装docker-compose
|
||||
> https://docs.docker.com/compose/install/linux/
|
||||
|
||||
#### 3. 镜像说明:
|
||||
#### Docker镜像说明:
|
||||
* 国内镜像地址:
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest`
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7`、`[version]-armv7`
|
||||
@@ -105,155 +105,109 @@ docker compose up -d
|
||||
* `https://hub.docker.com/r/greper/certd`
|
||||
* `greper/certd:latest`
|
||||
* `greper/certd:armv7`、`greper/certd:[version]-armv7`
|
||||
* GitHub Packages地址:
|
||||
* `ghcr.io/certd/certd:latest`
|
||||
* `ghcr.io/certd/certd:armv7`、`ghcr.io/certd/certd:[version]-armv7`
|
||||
|
||||
* 镜像构建通过`Actions`自动执行,过程公开透明,请放心使用
|
||||
* [点我查看镜像构建日志](https://github.com/certd/certd/actions/workflows/build-image.yml)
|
||||
|
||||

|
||||

|
||||
|
||||
#### 4. 访问测试
|
||||
|
||||
http://your_server_ip:7001
|
||||
默认账号密码:admin/123456
|
||||
记得修改密码
|
||||
|
||||
### 4.4 源码部署
|
||||
```shell
|
||||
# 克隆代码
|
||||
git clone https://github.com/certd/certd
|
||||
cd certd
|
||||
# 启动服务
|
||||
./start.sh
|
||||
# 数据默认保存在 ./packages/ui/certd-server/data 目录下,注意数据备份
|
||||
```
|
||||
如果是windows,请先安装`git for windows` ,然后右键,选择`open git bash here`打开终端,再执行`./start.sh`命令
|
||||
> 注意:
|
||||
> * 本应用存储的证书、授权信息等属于高度敏感数据,请做好安全防护
|
||||
> * 请务必使用HTTPS协议访问本应用,避免被中间人攻击
|
||||
> * 请务必使用web应用防火墙防护本应用,防止XSS、SQL注入等攻击
|
||||
> * 请务必做好服务器本身的安全防护,防止数据库泄露
|
||||
> * 请务必做好数据备份,避免数据丢失
|
||||
> * [更多安全生产建议点我](https://certd.docmirror.cn/guide/feature/safe/)
|
||||
|
||||
|
||||
## 五、 升级
|
||||
如果使用固定版本号
|
||||
1. 修改`docker-compose.yaml`中的镜像版本号
|
||||
2. 运行`docker compose up -d` 即可
|
||||
## 五、生态
|
||||
|
||||
### 1. 客户端工具 SSL-Assistant
|
||||
`SSL Assistant` 是一个运行于主机上的证书部署管理助手客户端。
|
||||
支持自动扫描主机`Nginx`配置,然后从`Certd`拉取证书并部署。
|
||||
在不想暴露ssh主机密码情况下,该工具非常好用。
|
||||
|
||||
如果使用`latest`版本
|
||||
```shell
|
||||
#重新拉取镜像
|
||||
docker pull registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
|
||||
# 重新启动容器
|
||||
docker compose down
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
> 数据默认存在`/data/certd`目录下,不用担心数据丢失
|
||||
开源地址: https://github.com/Youngxj/SSL-Assistant
|
||||
|
||||
|
||||
更新日志: [CHANGELOG](./CHANGELOG.md)
|
||||
## 六、更多帮助
|
||||
请访问官方文档:[https://certd.docmirror.cn/](https://certd.docmirror.cn/guide/)
|
||||
|
||||
* 升级方法:[升级方法](https://certd.docmirror.cn/guide/install/upgrade/)
|
||||
* 常见问题:[忘记密码](https://certd.docmirror.cn/guide/use/forgotpasswd/)
|
||||
* 多数据库:[多数据库配置](https://certd.docmirror.cn/guide/install/database/)
|
||||
* 站点安全:[站点安全特性](https://certd.docmirror.cn/guide/feature/safe/)
|
||||
* 更新日志:[CHANGELOG](./CHANGELOG.md)
|
||||
|
||||
|
||||
## 六、一些说明
|
||||
* 本项目ssl证书提供商为letencrypt
|
||||
* 申请过程遵循acme协议
|
||||
* 需要验证域名所有权,一般有两种方式(目前本项目仅支持dns-01)
|
||||
* http-01: 在网站根目录下放置一份txt文件
|
||||
* dns-01: 需要给域名添加txt解析记录,通配符域名只能用这种方式
|
||||
* 证书续期:
|
||||
* 实际上没有办法不改变证书文件本身情况下直接续期或者续签。
|
||||
* 我们所说的续期,其实就是按照全套流程重新申请一份新证书,然后重新部署上去。
|
||||
* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
|
||||
* 设置每天自动运行,当证书过期前20天,会自动重新申请证书并部署
|
||||
|
||||
|
||||
## 七、不同平台的设置说明
|
||||
|
||||
* [Cloudflare](./doc/cf/cf.md)
|
||||
* [腾讯云](./doc/tencent/tencent.md)
|
||||
* [windows主机](./doc/host/host.md)
|
||||
* [google证书](./doc/google/google.md)
|
||||
* [群晖部署certd及证书更新教程](./doc/synology/index.md)
|
||||
|
||||
* [CNAME证书校验方式说明](./doc/cname/index.md)
|
||||
|
||||
## 八、问题处理
|
||||
### 7.1 忘记管理员密码
|
||||
解决方法如下:
|
||||
1. 修改docker-compose.yaml文件,将环境变量`certd_system_resetAdminPasswd`改为`true`
|
||||
```yaml
|
||||
services:
|
||||
certd:
|
||||
environment: # 环境变量
|
||||
- certd_system_resetAdminPasswd=false
|
||||
```
|
||||
2. 重启容器
|
||||
```shell
|
||||
docker compose up -d
|
||||
docker logs -f --tail 500 certd
|
||||
# 观察日志,当日志中输出“重置1号管理员用户的密码完成”,即可操作下一步
|
||||
```
|
||||
3. 修改docker-compose.yaml,将`certd_system_resetAdminPasswd`改回`false`
|
||||
4. 再次重启容器
|
||||
```shell
|
||||
docker compose up -d
|
||||
```
|
||||
5. 使用`admin/123456`登录系统,请及时修改管理员密码
|
||||
|
||||
## 九、联系作者
|
||||
## 七、联系作者
|
||||
如有疑问,欢迎加入群聊(请备注certd)
|
||||
* QQ群:141236433
|
||||
* 微信群:
|
||||

|
||||
|
||||
| 加群 | 微信群 | QQ群 |
|
||||
|---------|-------|-------|
|
||||
| 二维码 | <img height="230" src="./docs/guide/contact/images/wx.png"> | <img height="230" src="./docs/guide/contact/images/qq.png"> |
|
||||
|
||||
也可以加作者好友
|
||||
|
||||
| 加作者好友 | 微信 QQ |
|
||||
|---------|-------------------------------------------------------------|
|
||||
| 二维码 | <img height="230" src="./docs/guide/contact/images/me.png"> |
|
||||
|
||||
|
||||
加作者好友
|
||||
<p align="center">
|
||||
<img height="230" src="./doc/images/me.png">
|
||||
</p>
|
||||
## 八、赞助捐赠
|
||||
|
||||
## 十、捐赠
|
||||
************************
|
||||
支持开源,为爱发电,我已入驻爱发电
|
||||
https://afdian.com/a/greper
|
||||
开源为什么要做专业版收费?
|
||||
1. 纯靠为爱发电不可持续(比如:我的[dev-sidecar项目](https://github.com/docmirror/dev-sidecar)即便是拥有20K+star,也差点凉凉,幸亏有另外大佬接手用爱发电)
|
||||
2. 没有赞助的项目,作者会比较任性,不会用心倾听用户的心声,不顾用户体验(比如:下意识拒绝需求、频繁破坏性变更升级、全盘推倒重来之类的)
|
||||
3. 没有赞助的项目,交流群的戾气有时候比较重,容易起冲突
|
||||
|
||||
发电权益:
|
||||
1. 可加入发电专属群,可以获得作者一对一技术支持
|
||||
2. 您的需求我们将优先实现,并且将作为专业版功能提供
|
||||
3. 一年期专业版激活码
|
||||
4. 赠送国外免费服务器部署方案(0成本使用Certd,可能需要翻墙,不过现在性能越来越差了)
|
||||
赞助权益:
|
||||
1. 可加入专属VIP群,可以获得作者一对一技术支持,必要时可以远程协助
|
||||
2. 您的需求我们将优先实现,并且可能将作为专业版功能提供
|
||||
3. 获得专业版功能
|
||||
|
||||
[50元专业版优惠券限时领取](https://app.handfree.work/subject/#/app/certd/product)
|
||||
|
||||
专业版特权对比
|
||||
|
||||
| 功能 | 免费版 | 专业版 |
|
||||
|---------|------------------------|-----------------------|
|
||||
| 免费证书申请 | 免费无限制 | 免费无限制 |
|
||||
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署等 | 支持群晖、宝塔、1Panel等,持续开发中 |
|
||||
| 发邮件功能 | 需要配置 | 免配置 |
|
||||
| 证书流水线条数 | 10条 | 无限制 |
|
||||
| 功能 | 免费版 | 专业版 |
|
||||
|---------|---------------------------------------|--------------------------------|
|
||||
| 免费证书申请 | 免费无限制 | 免费无限制 |
|
||||
| 证书域名数量 | 无限制 | 无限制 |
|
||||
| 证书流水线条数 | 无限制 | 无限制 |
|
||||
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署、宝塔、1Panel等大部分插件 | 群晖、威联通、proxmox等 |
|
||||
| 通知 | 邮件通知、自定义webhook | 邮件免配置、企微、钉钉、飞书、anpush、server酱等 |
|
||||
| 站点监控 | 限制1条 | 无限制 |
|
||||
| 批量操作 | 无 | 流水线模版,流水线复制,批量运行,批量设置通知、定时等 |
|
||||
| VIP群 | 无 | 可加,一对一技术支持,必要时可申请远程协助 |
|
||||
|
||||
************************
|
||||
|
||||
## 十一、贡献代码
|
||||
## 九、贡献代码
|
||||
|
||||
1. 本地开发 [贡献插件教程](./doc/dev/development.md)
|
||||
1. 本地开发请参考 [贡献插件向导](https://certd.docmirror.cn/guide/development/)
|
||||
2. 作为贡献者,代表您同意您贡献的代码如下许可:
|
||||
1. 可以调整开源协议以使其更严格或更宽松。
|
||||
2. 可以用于商业用途。
|
||||
|
||||
感谢以下贡献者做出的贡献。
|
||||
|
||||
<a href="https://github.com/certd/certd/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=certd/certd" />
|
||||
</a>
|
||||
|
||||
## 十二、 开源许可
|
||||
## 十、 开源许可
|
||||
* 本项目遵循 GNU Affero General Public License(AGPL)开源协议。
|
||||
* 允许个人和公司使用、复制、修改和分发本项目,禁止任何形式的商业用途
|
||||
* 允许个人和公司内部自由使用、复制、修改和分发本项目,未获得商业授权情况下禁止任何形式的商业用途
|
||||
* 未获得商业授权情况下,禁止任何对logo、版权信息及授权许可相关代码的修改。
|
||||
* 如需商业授权,请联系作者。
|
||||
|
||||
## 十三、我的其他项目(求Star)
|
||||
* [袖手GPT](https://ai.handsfree.work/) ChatGPT,国内可用,无需FQ,每日免费额度
|
||||
* [fast-crud](https://gitee.com/fast-crud/fast-crud/) 基于vue3的crud快速开发框架
|
||||
* [dev-sidecar](https://github.com/docmirror/dev-sidecar/) 直连访问github工具,无需FQ,解决github无法访问的问题
|
||||
|
||||
|
||||
|
||||
## 十四、更新日志
|
||||
|
||||
更新日志:[CHANGELOG](./CHANGELOG.md)
|
||||
|
||||
## 十一、我的其他项目(求Star)
|
||||
|
||||
| 项目名称 | stars | 项目描述 |
|
||||
| --------- |--------- |----------- |
|
||||
| [fast-crud](https://gitee.com/fast-crud/fast-crud/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/fast-crud/fast-crud?logo=github"/> | 基于vue3的crud快速开发框架 |
|
||||
| [dev-sidecar](https://github.com/docmirror/dev-sidecar/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/docmirror/dev-sidecar?logo=github"/> | 直连访问github工具,无需FQ,解决github无法访问的问题 |
|
||||
|
||||
@@ -0,0 +1,194 @@
|
||||
# Certd
|
||||
|
||||
[中文](./README.md) | English
|
||||
|
||||
Certd® is a free, fully automated certificate management system that ensures your website certificates never expire. The suffix 'd' is inspired by the naming convention of Linux daemons, representing a certificate daemon.
|
||||
|
||||
> We pioneered the pipeline-based certificate application and deployment model, which has been "referenced" by multiple projects. Being copied is also a form of success.
|
||||
|
||||
> Regarding certificate renewal:
|
||||
>* In fact, it's impossible to renew or reissue a certificate without modifying the certificate file itself.
|
||||
>* What we refer to as renewal is essentially applying for a new certificate following the full process and redeploying it.
|
||||
>* Free certificates expire in 90 days, which may be shortened in the future. Therefore, automated deployment is essential.
|
||||
|
||||
> The number of pipelines is now unlimited. Welcome to use it.
|
||||
|
||||
|
||||
Official Open Source Address:
|
||||
|
||||
[Github](https://github.com/certd/certd) 
|
||||
[Gitee](https://gitee.com/certd/certd) 
|
||||
[AtomGit](https://atomgit.com/certd/certd) 
|
||||
|
||||
|
||||
|
||||
## 1. Features
|
||||
This project not only supports automated certificate application but also automated certificate deployment and updates, ensuring your certificates never expire.
|
||||
|
||||
* Fully automated certificate application (supports domains registered with all registrars and multiple domain verification methods such as DNS-01, HTTP-01, and CNAME proxy).
|
||||
* Fully automated certificate deployment and updates (currently supports deployment to over 70 plugins, including hosts, Alibaba Cloud, Tencent Cloud, etc.).
|
||||
* Supports wildcard domains/pan-domains, allows multiple domains in a single certificate, and supports various certificate formats such as pem, pfx, der, and jks.
|
||||
* Multiple notification methods, including email, webhook, WeChat Work, DingTalk, Lark, and anpush.
|
||||
* On-premises deployment, local data storage, simple and quick installation. Images are built by Github Actions, with a transparent process.
|
||||
* Multiple security measures, including authorization encryption, site hiding, 2FA, and password brute-force protection.
|
||||
* Supports multiple databases such as SQLite, PostgreSQL, and MySQL.
|
||||
* Open API support.
|
||||
* Site certificate monitoring.
|
||||
* Multi-user management.
|
||||
* Multi-language support (Chinese and English switching).
|
||||
* Downward compatibility across all versions, with one-click worry-free upgrades.
|
||||
|
||||

|
||||
|
||||
## 2. Online Experience
|
||||
Visit the official demo site and register to experience it.
|
||||
|
||||
https://certd.handfree.work/
|
||||
|
||||
> Note: Data will be cleaned up irregularly, and scheduled tasks may be stopped. For production use, please deploy it yourself.
|
||||
> The content contains sensitive information. Make sure to deploy it locally for production use.
|
||||
|
||||

|
||||
|
||||
## 3. Usage Tutorial
|
||||
Just 3 steps to ensure your certificates never expire.
|
||||
|
||||
### 1. Create a Certificate Pipeline
|
||||

|
||||
|
||||
> After successful addition, you can directly run the pipeline to apply for a certificate.
|
||||
|
||||
### 2. Add a Deployment Task
|
||||
Normally, we need to deploy certificates to applications. Certd supports a wide range of deployment plugins. You can choose based on your needs, such as deploying to Nginx, Alibaba Cloud, Tencent Cloud, K8S, CDN, Baota, 1Panel, etc.
|
||||
|
||||
Here's a demonstration of deploying certificates to a host's Nginx:
|
||||

|
||||
|
||||
If the current deployment plugins don't meet your needs, you can also download them manually and deploy them yourself.
|
||||

|
||||
|
||||
### 3. Run Scheduled Tasks
|
||||

|
||||
|
||||
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
|
||||
-------> [Click here to view detailed usage steps](./step.md) <--------
|
||||
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
|
||||
|
||||
For more tutorials, please visit the official documentation [certd.docmirror.cn](https://certd.docmirror.cn/guide/).
|
||||
|
||||
## 4. On-Premises Deployment
|
||||
Since certificates, authorization information, and other data are highly sensitive, please make sure to deploy them on-premises to ensure data security.
|
||||
|
||||
You can choose one of the following deployment methods based on your needs:
|
||||
|
||||
1. 【Recommended】[Docker Deployment](https://certd.docmirror.cn/guide/install/docker/)
|
||||
2. 【Recommended】[BT Panel Deployment](https://certd.docmirror.cn/guide/install/docker/)
|
||||
3. 【Recommended】[1Panel Deployment](https://certd.docmirror.cn/guide/install/1panel/)
|
||||
4. 【Recommended】[Rainyun One-Click Deployment](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2_): Double your first recharge, only $2.2 per month.
|
||||
[<img src="https://rainyun-apps.cn-nb1.rains3.com/materials/deploy-on-rainyun-cn.svg">](https://app.rainyun.com/apps/rca/store/6646/?ref=NzExMDQ2_)
|
||||
5. 【Not Recommended】[Source Code Deployment](https://certd.docmirror.cn/guide/install/source/)
|
||||
|
||||
#### Docker Image Information:
|
||||
* Domestic Image Addresses:
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest`
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7`, `[version]-armv7`
|
||||
* DockerHub Addresses:
|
||||
* `https://hub.docker.com/r/greper/certd`
|
||||
* `greper/certd:latest`
|
||||
* `greper/certd:armv7`, `greper/certd:[version]-armv7`
|
||||
* GitHub Packages Addresses:
|
||||
* `ghcr.io/certd/certd:latest`
|
||||
* `ghcr.io/certd/certd:armv7`, `ghcr.io/certd/certd:[version]-armv7`
|
||||
|
||||
* Images are built automatically by `Actions`, with a transparent process. Please use them with confidence.
|
||||
* [Click here to view image build logs](https://github.com/certd/certd/actions/workflows/build-image.yml)
|
||||
|
||||

|
||||
|
||||
> Note:
|
||||
> * The certificates, authorization information, and other data stored in this application are highly sensitive. Please take appropriate security measures.
|
||||
> * Make sure to use the HTTPS protocol to access this application to avoid man-in-the-middle attacks.
|
||||
> * Make sure to use a web application firewall to protect this application from attacks such as XSS and SQL injection.
|
||||
> * Make sure to secure the server itself to prevent database leakage.
|
||||
> * Make sure to back up your data to avoid data loss.
|
||||
> * [Click here for more production safety suggestions](https://certd.docmirror.cn/guide/feature/safe/)
|
||||
|
||||
## 5. Ecosystem
|
||||
|
||||
### 1. Client Tool: SSL-Assistant
|
||||
`SSL Assistant` is a certificate deployment and management assistant client that runs on hosts. It supports automatic scanning of the host's `Nginx` configuration and pulling certificates from `Certd` for deployment. This tool is very useful when you don't want to expose your SSH host password.
|
||||
|
||||
Open-source Address: https://github.com/Youngxj/SSL-Assistant
|
||||
|
||||
## 6. More Help
|
||||
Please visit the official documentation: [https://certd.docmirror.cn/](https://certd.docmirror.cn/guide/).
|
||||
|
||||
* Upgrade Method: [Upgrade Guide](https://certd.docmirror.cn/guide/install/upgrade/)
|
||||
* Common Issues: [Forgot Password](https://certd.docmirror.cn/guide/use/forgotpasswd/)
|
||||
* Multi-Database: [Multi-Database Configuration](https://certd.docmirror.cn/guide/install/database/)
|
||||
* Site Security: [Site Security Features](https://certd.docmirror.cn/guide/feature/safe/)
|
||||
* Changelog: [CHANGELOG](./CHANGELOG.md)
|
||||
|
||||
## 7. Contact the Author
|
||||
If you have any questions, feel free to join the group chat (please mention 'certd' in your message).
|
||||
|
||||
| Join Group | WeChat Group | QQ Group |
|
||||
|---------|-------|-------|
|
||||
| QR Code | <img height="230" src="./docs/guide/contact/images/wx.png"> | <img height="230" src="./docs/guide/contact/images/qq.png"> |
|
||||
|
||||
You can also add the author as a friend.
|
||||
|
||||
| Add Author as Friend | WeChat QQ |
|
||||
|---------|-------|-------|
|
||||
| QR Code | <img height="230" src="./docs/guide/contact/images/me.png"> |
|
||||
|
||||
## 8. Donation
|
||||
************************
|
||||
[](https://github.com/sponsors/greper)
|
||||
************************
|
||||
Support open-source projects and contribute with love. I've joined Afdian.
|
||||
https://afdian.com/a/greper
|
||||
|
||||
Benefits of Contribution:
|
||||
1. Join the exclusive contributor group and get one-on-one technical support from the author.
|
||||
2. Your requests will be prioritized and implemented as professional edition features.
|
||||
3. Receive a one-year professional edition activation code.
|
||||
|
||||
Comparison of Professional Edition Privileges:
|
||||
|
||||
| Feature | Free Edition | Professional Edition |
|
||||
|---------|---------------------------------------|--------------------------------|
|
||||
| Free Certificate Application | Unlimited for free | Unlimited for free |
|
||||
| Number of Domains | Unlimited | Unlimited |
|
||||
| Number of Certificate Pipelines | Unlimited | Unlimited |
|
||||
| Site Certificate Monitoring | Limited to 1 | Unlimited |
|
||||
| Automatic Deployment Plugins | Most plugins such as Alibaba Cloud CDN, Tencent Cloud, QiNiu CDN, Host Deployment, Baota, 1Panel | Synology |
|
||||
| Notifications | Email, Custom Webhook | Email without configuration, WeChat Work, DingTalk, Lark, anpush, ServerChan, etc. |
|
||||
|
||||
************************
|
||||
|
||||
## 9. Contribute Code
|
||||
|
||||
1. For local development, please refer to the [Plugin Contribution Guide](https://certd.docmirror.cn/guide/development/).
|
||||
2. As a contributor, you agree that your contributed code is subject to the following license:
|
||||
1. The open-source license can be adjusted to be more or less restrictive.
|
||||
2. It can be used for commercial purposes.
|
||||
|
||||
Thank you to the following contributors.
|
||||
|
||||
<a href="https://github.com/certd/certd/graphs/contributors">
|
||||
<img src="https://contrib.rocks/image?repo=certd/certd" />
|
||||
</a>
|
||||
|
||||
## 10. Open-Source License
|
||||
* This project follows the GNU Affero General Public License (AGPL).
|
||||
* Individuals and companies are allowed to use, copy, modify, and distribute this project freely for internal use. Any form of commercial use is prohibited without obtaining commercial authorization.
|
||||
* Without commercial authorization, any modification of the logo, copyright information, and license-related code is prohibited.
|
||||
* For commercial authorization, please contact the author.
|
||||
|
||||
## 11. My Other Projects (Please Star)
|
||||
|
||||
| Project Name | Stars | Project Description |
|
||||
|----------------|---------------|--------------|
|
||||
| [fast-crud](https://gitee.com/fast-crud/fast-crud/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/fast-crud/fast-crud?logo=github"/> | A fast CRUD development framework based on Vue3. |
|
||||
| [dev-sidecar](https://github.com/docmirror/dev-sidecar/) | <img alt="GitHub stars" src="https://img.shields.io/github/stars/docmirror/dev-sidecar?logo=github"/> | A tool to access GitHub directly without a VPN, solving the problem of inaccessible GitHub. |
|
||||
@@ -1 +0,0 @@
|
||||
1
|
||||
@@ -1,27 +0,0 @@
|
||||
# CNAME代理校验方式说明
|
||||
|
||||
## 1. 前言
|
||||
申请域名证书是需要校验域名所有权的。
|
||||
目前有两种校验方式:
|
||||
1. http-01: 在网站根目录下放置一份txt文件(Certd不支持)
|
||||
2. dns-01: 需要给域名添加txt解析记录,通配符域名只能用这种方式(Certd采用这种方式)
|
||||
|
||||
DNS-01方式需要开发适配DNS服务商的接口,目前已实现主流域名注册商的接口(阿里云、腾讯云、华为云、Cloudflare、西数)
|
||||
|
||||
如果域名不在这几家,那么就只能通过CNAME代理校验方式来实现
|
||||
|
||||
|
||||
## 2. 使用步骤
|
||||
|
||||
1. 假设你要申请证书的域名叫:need.cert.com ,它是在其他服务商注册的
|
||||
2. 现在你需要另外一个域名:cname.foo.com,这个域名属于是在阿里云、腾讯云、华为云、Cloudflare、西数,或者你把这个域名的DNS服务器转到这几家。
|
||||
3. 到Certd的 CNAME服务管理界面,用`cname.foo.com`创建一条默认的CNAME服务,需要提供DNS提供商授权。
|
||||

|
||||
4. 申请证书时,Certd会生成一个随机的CNAME记录,例如:`_acme-challenge.need`->`xxxxxx.cname.foo.com`
|
||||

|
||||
5. 您需要手动添加这条CNAME记录到你要申请证书的域名解析中,点击校验,校验成功后就可以开始申请证书了 (此操作每个域名只需要做一次,后续可以重复使用,注意不要删除添加的CNAME记录)
|
||||

|
||||
6. 
|
||||
6. 申请过程中,Certd会在`xxxxxx.cname.foo.com`下自动添加验证TXT记录。
|
||||
7. 由于您配置了`_acme-challenge.need`的CNAME,所以这个TXT记录会被解析到`_acme-challenge.need.cert.com`下,从而完成域名校验。
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
# 宝塔部署教程
|
||||
|
||||
## 编排模版部署
|
||||
|
||||
### 创建docker模版
|
||||
打开docker-compose.yaml,
|
||||
https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
|
||||
|
||||
整个内容复制下来
|
||||
|
||||
然后到宝塔里面进到docker的编排模版,新建模版
|
||||

|
||||
|
||||
### 启动应用
|
||||
|
||||

|
||||
|
||||
等待启动完成
|
||||
|
||||
### 打开应用
|
||||
|
||||
http://ip:7001
|
||||
|
||||
|
||||
## 二、一键应用部署
|
||||
需要宝塔9.2.0版本
|
||||
|
||||
### 应用商店
|
||||
进入应用商店,更新应用列表
|
||||
|
||||
### 搜索certd
|
||||
点击安装
|
||||
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 31 KiB |
@@ -1,24 +0,0 @@
|
||||
# 远程主机
|
||||
|
||||
远程主机基于ssh协议,通过ssh连接远程主机,执行命令。
|
||||
|
||||
## windows开启OpenSSH Server
|
||||
1. 安装OpenSSH Server
|
||||
请前往Microsoft官方文档查看如何开启openSSH
|
||||
https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse?tabs=gui#install-openssh-for-windows
|
||||
|
||||
2. 启动OpenSSH Server服务
|
||||
```
|
||||
win+R 弹出运行对话框,输入 services.msc 打开服务管理器
|
||||
找到 OpenSSH SSH Server
|
||||
启动ssh server服务,并且设置为自动启动
|
||||
```
|
||||
|
||||
3. 测试ssh登录
|
||||
使用你常用的ssh客户端,连接你的windows主机,进行测试
|
||||
|
||||
```cmd
|
||||
# 如何确定你用户名
|
||||
C:\Users\xiaoj>
|
||||
↑↑↑↑---------这个就是windows ssh的登录用户名
|
||||
```
|
||||
|
Before Width: | Height: | Size: 169 KiB |
|
Before Width: | Height: | Size: 327 KiB |
@@ -1,41 +0,0 @@
|
||||
# 群晖部署和证书更新
|
||||
|
||||
|
||||
## 一、群晖系统上部署Certd教程
|
||||
|
||||
### 1. 打开Container Manager
|
||||
|
||||

|
||||
|
||||
### 2. 新增项目
|
||||
|
||||

|
||||
|
||||
### 3. 配置Certd项目
|
||||
|
||||

|
||||
|
||||
### 4. 外网访问设置
|
||||
|
||||

|
||||
|
||||
### 5. 确认项目信息
|
||||
|
||||

|
||||
|
||||
点击完成安装,等待certd启动完成即可
|
||||
|
||||
### 6. 门户配置向导【可选】
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
## 二、更新群晖证书
|
||||
|
||||
## 1. 前提条件
|
||||
* 已经部署了certd
|
||||
* 群晖上已经设置好了证书(证书建议设置好描述,插件需要根据描述查找证书)
|
||||
|
||||
## 2. 在certd上配置自动更新群晖证书插件
|
||||

|
||||
@@ -1,15 +0,0 @@
|
||||
# 腾讯云
|
||||
|
||||
|
||||
## DNSPOD 授权设置【已废弃,请使用腾讯云API】
|
||||
打开 https://console.dnspod.cn/account/token/apikey
|
||||
然后按如下方式获取DNSPOD的授权
|
||||

|
||||
|
||||
|
||||
## 腾讯云API密钥设置
|
||||
|
||||
腾讯云其他部署需要API密钥,需要在腾讯云控制台进行设置
|
||||
打开 https://console.cloud.tencent.com/cam/capi
|
||||
然后按如下方式获取腾讯云的API密钥
|
||||

|
||||
@@ -1,50 +1,95 @@
|
||||
version: '3.3' # 兼容旧版docker-compose
|
||||
services:
|
||||
certd:
|
||||
# 镜像 # ↓↓↓↓↓ ---- 镜像版本号,建议改成固定版本号
|
||||
# 镜像 # ↓↓↓↓↓ ---- 镜像版本号,建议改成固定版本号,例如:certd:1.29.0
|
||||
image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
|
||||
# image: ghcr.io/certd/certd:latest # --------- 如果 报镜像not found,可以尝试其他镜像源
|
||||
# image: greper/certd:latest
|
||||
container_name: certd # 容器名
|
||||
restart: unless-stopped # 自动重启
|
||||
volumes:
|
||||
# ↓↓↓↓↓ -------------------------------------------------------- 数据库以及证书存储路径,默认存在宿主机的/data/certd/目录下,【您需要定时备份此目录,以保障数据容灾】
|
||||
- /data/certd:/app/data
|
||||
- /data/certd:/app/data # 只要修改冒号前面的,冒号后面的/app/data切记切记不要动
|
||||
#- /volume1/docker/certd:/app/data:delegated #群晖使用这个配置
|
||||
# ↓↓↓↓↓ -------------------------------------------------------- 如果走时不准,考虑挂载localtime文件
|
||||
#- /etc/localtime:/etc/localtime
|
||||
#- /etc/timezone:/etc/timezone
|
||||
ports: # 端口映射
|
||||
# ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号
|
||||
# ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号,第二个7001不要动
|
||||
- "7001:7001"
|
||||
dns:
|
||||
# ↓↓↓↓ ---------------------------------------------------------- 如果出现getaddrinfo ENOTFOUND等错误,可以尝试修改或注释dns配置
|
||||
- 223.5.5.5
|
||||
- 223.6.6.6
|
||||
# ↓↓↓↓ ---------------------------------------------------------- 如果你服务器部署在国外,可以用8.8.8.8替换上面的dns
|
||||
# - 8.8.8.8
|
||||
# ↓↓↓↓ ---------------------------------------------------------- https端口,可以根据实际情况,是否暴露该端口
|
||||
- "7002:7002"
|
||||
#↓↓↓↓ -------------------------------------------------------------- 如果出现getaddrinfo EAI_AGAIN 或 getaddrinfo ENOTFOUND 错误,可以尝试设置dns
|
||||
# dns:
|
||||
# - 223.5.5.5 # 阿里云公共dns
|
||||
# - 223.6.6.6
|
||||
# # ↓↓↓↓ --------------------------------------------------------- 如果你服务器在腾讯云,可以用这个替换上面阿里云的公共dns
|
||||
# - 119.29.29.29 # 腾讯云公共dns
|
||||
# - 182.254.116.116
|
||||
# # ↓↓↓↓ --------------------------------------------------------- 如果你服务器部署在国外,可以用这个替换上面阿里云的公共dns
|
||||
# - 8.8.8.8 # 谷歌公共dns
|
||||
# - 8.8.4.4
|
||||
# extra_hosts:
|
||||
# ↓↓↓↓ ---------------------------------------------------------- 这里可以配置自定义hosts,外网域名可以指向本地局域网ip地址
|
||||
# - "localdomain.comm:192.168.1.3"
|
||||
environment: # 环境变量
|
||||
# # ↓↓↓↓ -------------------------------------------------------- 这里可以配置自定义hosts,外网域名可以指向本地局域网ip地址
|
||||
# - "localdomain.com:192.168.1.3"
|
||||
# # ↓↓↓↓ ------------------------------------------------ 直接使用主机的网络,如果网络问题实在找不到原因,可以尝试打开此参数
|
||||
# network_mode: host
|
||||
labels:
|
||||
com.centurylinklabs.watchtower.enable: "true"
|
||||
# ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把下面networks的注释放开
|
||||
# networks:
|
||||
# - ip6net
|
||||
environment:
|
||||
# ↓↓↓↓ ----------------------------------------------------- 使用上海东八时区
|
||||
- TZ=Asia/Shanghai
|
||||
# 设置环境变量即可自定义certd配置
|
||||
# 配置项见: packages/ui/certd-server/src/config/config.default.ts
|
||||
# 配置规则: certd_ + 配置项, 点号用_代替
|
||||
|
||||
# ↓↓↓↓ ------------------------------------ 这里可以设置http代理
|
||||
#- HTTPS_PROXY=http://xxxxxx:xx
|
||||
#- HTTP_PROXY=http://xxxxxx:xx
|
||||
# ↓↓↓↓ ----------------------------- 如果忘记管理员密码,可以设置为true,重启之后,管理员密码将改成123456,然后请及时修改回false
|
||||
# 设置环境变量即可自定义certd配置
|
||||
# 配置项见: packages/ui/certd-server/src/config/config.default.ts
|
||||
# 配置规则: certd_ + 配置项, 点号用_代替
|
||||
# #↓↓↓↓ ----------------------------- 如果忘记管理员密码,可以设置为true,docker compose up -d 重建容器之后,管理员密码将改成123456,然后请及时修改回false
|
||||
- certd_system_resetAdminPasswd=false
|
||||
# ↓↓↓↓ -------------------------- 如果设置为true,启动后所有配置了cron的流水线任务都将被立即触发一次
|
||||
- certd_cron_immediateTriggerOnce=false
|
||||
# ↓↓↓↓ -------------------------------- 配置证书和key,则表示https方式启动,使用https协议访问,https://your.domain:7001
|
||||
#- certd_koa_key=./data/ssl/cert.key
|
||||
#- certd_koa_cert=./data/ssl/cert.crt
|
||||
# ↓↓↓ 要使用ipv6,将此配置修改为::
|
||||
- certd_koa_hostname=0.0.0.0
|
||||
|
||||
# ↓↓↓↓ ------------------------------- 使用postgresql数据库
|
||||
# - certd_flyway_scriptDir=./db/migration-pg # 升级脚本目录
|
||||
# - certd_typeorm_dataSource_default_type=postgres # 数据库类型
|
||||
# - certd_typeorm_dataSource_default_host=localhost # 数据库地址
|
||||
# - certd_typeorm_dataSource_default_port=5433 # 数据库端口
|
||||
# - certd_typeorm_dataSource_default_username=postgres # 用户名
|
||||
# - certd_typeorm_dataSource_default_password=yourpasswd # 密码
|
||||
# - certd_typeorm_dataSource_default_database=certd # 数据库名
|
||||
# 默认使用sqlite文件数据库,如果需要使用其他数据库,请设置以下环境变量
|
||||
# 注意: 选定使用一种数据库之后,不支持更换数据库。
|
||||
# 数据库迁移方法:1、使用新数据库重新部署一套,然后将旧数据同步过去,注意flyway_history表的数据不要同步
|
||||
# #↓↓↓↓ ----------------------------- 使用postgresql数据库,需要提前创建数据库
|
||||
# - certd_flyway_scriptDir=./db/migration-pg # 升级脚本目录
|
||||
# - certd_typeorm_dataSource_default_type=postgres # 数据库类型
|
||||
# - certd_typeorm_dataSource_default_host=localhost # 数据库地址
|
||||
# - certd_typeorm_dataSource_default_port=5433 # 数据库端口
|
||||
# - certd_typeorm_dataSource_default_username=postgres # 用户名
|
||||
# - certd_typeorm_dataSource_default_password=yourpasswd # 密码
|
||||
# - certd_typeorm_dataSource_default_database=certd # 数据库名
|
||||
|
||||
# #↓↓↓↓ ----------------------------- 使用mysql8数据库,需要提前创建数据库 charset=utf8mb4, collation=utf8mb4_bin
|
||||
# - certd_flyway_scriptDir=./db/migration-mysql # 升级脚本目录
|
||||
# - certd_typeorm_dataSource_default_type=mysql # 数据库类型, 或者 mariadb
|
||||
# - certd_typeorm_dataSource_default_host=localhost # 数据库地址
|
||||
# - certd_typeorm_dataSource_default_port=3306 # 数据库端口
|
||||
# - certd_typeorm_dataSource_default_username=root # 用户名
|
||||
# - certd_typeorm_dataSource_default_password=yourpasswd # 密码
|
||||
# - certd_typeorm_dataSource_default_database=certd # 数据库名
|
||||
|
||||
# ↓↓↓↓ --------------------------------------------------------- 自动升级,上面certd的版本号要保持为latest
|
||||
# certd-updater: # 添加 Watchtower 服务
|
||||
# image: containrrr/watchtower:latest
|
||||
# container_name: certd-updater
|
||||
# restart: unless-stopped
|
||||
# volumes:
|
||||
# - /var/run/docker.sock:/var/run/docker.sock
|
||||
# # 配置 自动更新
|
||||
# environment:
|
||||
# - WATCHTOWER_CLEANUP=true # 自动清理旧版本容器
|
||||
# - WATCHTOWER_INCLUDE_STOPPED=false # 不更新已停止的容器
|
||||
# - WATCHTOWER_LABEL_ENABLE=true # 根据容器标签进行更新
|
||||
# - WATCHTOWER_POLL_INTERVAL=600 # 每 10 分钟检查一次更新
|
||||
|
||||
|
||||
# ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把上面networks的注释放开
|
||||
#networks:
|
||||
# ip6net:
|
||||
# enable_ipv6: true
|
||||
# ipam:
|
||||
# config:
|
||||
# - subnet: 2001:db8::/64
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
.vitepress/cache
|
||||
dist
|
||||
@@ -0,0 +1,159 @@
|
||||
import {defineConfig} from "vitepress";
|
||||
// Import lightbox plugin
|
||||
import lightbox from "vitepress-plugin-lightbox";
|
||||
|
||||
// https://vitepress.dev/reference/site-config
|
||||
export default defineConfig({
|
||||
title: "Certd",
|
||||
titleTemplate: "开源SSL证书管理工具,证书自动化申请部署,让你的网站证书永不过期",
|
||||
description: "Certd帮助文档,Certd是一款开源免费的全自动SSL证书管理工具;证书自动化申请部署流水线;自动证书申请、更新、续期;通配符证书,泛域名证书申请;证书自动化部署到阿里云、腾讯云、主机、群晖、宝塔。",
|
||||
markdown: {
|
||||
config: (md) => {
|
||||
// Use lightbox plugin
|
||||
md.use(lightbox, {});
|
||||
}
|
||||
},
|
||||
sitemap: {
|
||||
hostname: 'https://certd.docmirror.cn'
|
||||
},
|
||||
head: [
|
||||
// [
|
||||
// 'meta',
|
||||
// {
|
||||
// name: 'viewport',
|
||||
// content:
|
||||
// 'width=device-width,initial-scale=1,minimfast-cum-scale=1.0,maximum-scale=1.0,user-scalable=no',
|
||||
// },
|
||||
// ],
|
||||
["meta", {
|
||||
name: "keywords",
|
||||
content: "证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具、Certd、SSL证书自动部署、证书自动化,https证书,pfx证书,der证书,TLS证书,nginx证书自动续签自动部署,SSL平台,证书管理平台,证书流水线"
|
||||
}],
|
||||
// ["meta", { name: "google-site-verification",content: "V5XLTSnXoT15uQotwpxJoQolUo2d5UbSL-TacsyOsC0"}],
|
||||
//<meta name="baidu-site-verification" content="codeva-MiWN8Y07Ua" />
|
||||
// ["meta", {name: "baidu-site-verification",content: "codeva-MiWN8Y07Ua"}],
|
||||
["link", {rel: "icon", href: "/static/logo/logo.svg"}]
|
||||
],
|
||||
themeConfig: {
|
||||
logo: "/static/logo/logo.svg",
|
||||
search: {
|
||||
provider: "local",
|
||||
options: {
|
||||
detailedView: true,
|
||||
translations: {
|
||||
button: {
|
||||
buttonText: "搜索文档",
|
||||
buttonAriaLabel: "搜索文档"
|
||||
},
|
||||
modal: {
|
||||
noResultsText: "无法找到相关结果",
|
||||
resetButtonTitle: "清除查询条件",
|
||||
footer: {
|
||||
selectText: "选择",
|
||||
closeText: "关闭",
|
||||
navigateText: "切换"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
// https://vitepress.dev/reference/default-theme-config
|
||||
nav: [
|
||||
{text: "首页", link: "/"},
|
||||
{text: "指南", link: "/guide/"},
|
||||
{text: "Demo体验", link: "https://certd.handfree.work"}
|
||||
],
|
||||
sidebar: {
|
||||
"/guide/": [
|
||||
{
|
||||
text: "入门",
|
||||
items: [
|
||||
{text: "简介", link: "/guide/"},
|
||||
{text: "快速开始", link: "/guide/start.md"},
|
||||
{
|
||||
text: "私有化部署",
|
||||
items: [
|
||||
{text: "docker部署", link: "/guide/install/docker/"},
|
||||
{text: "宝塔面板部署", link: "/guide/install/baota/"},
|
||||
{text: "1Panel部署", link: "/guide/install/1panel/"},
|
||||
{text: "群晖部署", link: "/guide/use/synology/"},
|
||||
{text: "源码部署", link: "/guide/install/source/"}
|
||||
]
|
||||
},
|
||||
{text: "演示教程", link: "/guide/tutorial.md"},
|
||||
{text: "版本升级", link: "/guide/install/upgrade.md"},
|
||||
{text: "赞助专业版", link: "/guide/donate/"},
|
||||
]
|
||||
},
|
||||
{
|
||||
text: "特性",
|
||||
items: [
|
||||
{text: "CNAME代理校验", link: "/guide/feature/cname/index.md"},
|
||||
{text: "多数据库支持", link: "/guide/install/database.md"},
|
||||
{text: "开放接口", link: "/guide/open/index.md"},
|
||||
{
|
||||
text: "站点安全", link: "/guide/feature/safe/"
|
||||
},
|
||||
{
|
||||
text: "插件列表", items: [
|
||||
{text: "DNS提供商", link: "/guide/plugins/dns-provider.md"},
|
||||
{text: "任务插件", link: "/guide/plugins/deploy.md"},
|
||||
{text: "通知插件", link: "/guide/plugins/notification.md"},
|
||||
{text: "授权提供商", link: "/guide/plugins/access.md"},
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
{
|
||||
text: "常见问题",
|
||||
items: [
|
||||
{text: "QA", link: "/guide/qa/use.md"},
|
||||
{text: "忘记密码/无法登录", link: "/guide/use/forgotpasswd/"},
|
||||
{text: "群晖证书部署", link: "/guide/use/synology/"},
|
||||
{text: "腾讯云密钥获取", link: "/guide/use/tencent/"},
|
||||
{text: "连接windows主机", link: "/guide/use/host/windows.md"},
|
||||
{text: "Google EAB获取", link: "/guide/use/google/"},
|
||||
{text: "阿里云相关", link: "/guide/use/aliyun/"},
|
||||
{text: "数据备份", link: "/guide/use/backup/"},
|
||||
{text: "Certd本身的证书更新", link: "/guide/use/https/index.md"},
|
||||
{text: "js脚本插件使用", link: "/guide/use/custom-script/index.md"},
|
||||
{text: "邮箱配置", link: "/guide/use/email/index.md"},
|
||||
{text: "IPv6支持", link: "/guide/use/setting/ipv6.md"},
|
||||
{text: "ESXi", link: "/guide/use/ESXi/index.md"},
|
||||
{text: "宝塔动态IP白名单", link: "/guide/use/baota/white_list.md"},
|
||||
{text: "子域名托管", link: "/guide/use/cert/subdomain.md"},
|
||||
{text: "流水线有效期", link: "/guide/use/pipeline/valid.md"},
|
||||
{text: "IP证书申请", link: "/guide/use/cert/ip.md"},
|
||||
{text: "插件开发", link: "/guide/use/dev/plugin.md"},
|
||||
]
|
||||
},
|
||||
{
|
||||
text: "商业版配置", link: "/guide/use/comm/", items: [
|
||||
{text: "支付宝配置", link: "/guide/use/comm/payments/alipay.md"},
|
||||
{text: "微信支付配置", link: "/guide/use/comm/payments/wxpay.md"},
|
||||
{text: "彩虹易支付配置", link: "/guide/use/comm/payments/yizhifu.md"},
|
||||
]
|
||||
},
|
||||
{
|
||||
text: "其他",
|
||||
items: [
|
||||
{text: "贡献代码", link: "/guide/development/index.md"},
|
||||
{text: "更新日志", link: "/guide/changelogs/CHANGELOG.md"},
|
||||
{text: "镜像说明", link: "/guide/image.md"},
|
||||
{text: "联系我们", link: "/guide/contact/"},
|
||||
{text: "开源协议", link: "/guide/license/"},
|
||||
{text: "我的其他开源项目", link: "/guide/link/"},
|
||||
]
|
||||
}
|
||||
],
|
||||
},
|
||||
|
||||
socialLinks: [
|
||||
{icon: "github", link: "https://github.com/certd/certd"}
|
||||
],
|
||||
footer: {
|
||||
message: "Certd帮助文档 | <a href='https://beian.miit.gov.cn/' target='_blank'>粤ICP备14088435号</a> ",
|
||||
copyright: "Copyright © 2021-present <a href='https://handfree.work/' target='_blank'>handfree.work</a> "
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,37 @@
|
||||
<script setup>
|
||||
import DefaultTheme from "vitepress/theme";
|
||||
import { onMounted } from "vue";
|
||||
import { useRouter } from "vitepress";
|
||||
import mediumZoom from "medium-zoom";
|
||||
|
||||
const { Layout } = DefaultTheme;
|
||||
const router = useRouter();
|
||||
|
||||
// Setup medium zoom with the desired options
|
||||
const setupMediumZoom = () => {
|
||||
mediumZoom("[data-zoomable]", {
|
||||
background: "transparent",
|
||||
});
|
||||
};
|
||||
|
||||
// Apply medium zoom on load
|
||||
onMounted(setupMediumZoom);
|
||||
|
||||
// Subscribe to route changes to re-apply medium zoom effect
|
||||
router.onAfterRouteChanged = setupMediumZoom;
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<Layout />
|
||||
</template>
|
||||
|
||||
<style>
|
||||
.medium-zoom-overlay {
|
||||
backdrop-filter: blur(5rem);
|
||||
}
|
||||
|
||||
.medium-zoom-overlay,
|
||||
.medium-zoom-image--opened {
|
||||
z-index: 999;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,35 @@
|
||||
// https://vitepress.dev/guide/custom-theme
|
||||
// import { h } from 'vue'
|
||||
import type { Theme } from 'vitepress'
|
||||
import DefaultTheme from 'vitepress/theme'
|
||||
import './style.css'
|
||||
import Layout from './Layout.vue'
|
||||
|
||||
import { registerAnalytics, siteIds, trackPageview } from './plugins/baidutongji'
|
||||
import { inBrowser } from "vitepress";
|
||||
|
||||
|
||||
export default {
|
||||
extends: DefaultTheme,
|
||||
Layout,
|
||||
// Layout: () => {
|
||||
// return h(DefaultTheme.Layout, null, {
|
||||
// // https://vitepress.dev/guide/extending-default-theme#layout-slots
|
||||
// })
|
||||
// },
|
||||
enhanceApp({ app, router, siteData }) {
|
||||
// ...
|
||||
if (inBrowser) {
|
||||
registerAnalytics(siteIds)
|
||||
|
||||
window.addEventListener('hashchange', () => {
|
||||
const { href: url } = window.location
|
||||
trackPageview(siteIds, url)
|
||||
})
|
||||
|
||||
router.onAfterRouteChanged = (to) => {
|
||||
trackPageview(siteIds, to)
|
||||
}
|
||||
}
|
||||
}
|
||||
} satisfies Theme
|
||||
@@ -0,0 +1,49 @@
|
||||
import { inBrowser } from 'vitepress'
|
||||
|
||||
/**
|
||||
* 统计站点的 ID 列表
|
||||
*/
|
||||
export const siteIds = 'a6ce877a899ae44292e4f854a53d688e'
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
_hmt: any
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册统计
|
||||
*/
|
||||
export function registerAnalytics(siteId: string) {
|
||||
if (!inBrowser)
|
||||
return
|
||||
if (document.querySelector(`#analytics-plugin-${siteId}`))
|
||||
return
|
||||
window._hmt = window._hmt ? window._hmt : []
|
||||
const script = document.createElement('script')
|
||||
script.id = `analytics-${siteId}`
|
||||
script.async = true
|
||||
script.src = `https://hm.baidu.com/hm.js?${siteId}`
|
||||
document.querySelector('head')?.appendChild(script)
|
||||
}
|
||||
|
||||
/**
|
||||
* 上报 PV 数据
|
||||
* @param siteId - 站点 ID
|
||||
* @param pageUrl - 页面 URL
|
||||
*/
|
||||
export function trackPageview(siteId: string, pageUrl: string) {
|
||||
if (!inBrowser)
|
||||
return
|
||||
if (!pageUrl || typeof pageUrl !== 'string')
|
||||
pageUrl = '/'
|
||||
|
||||
if (pageUrl.startsWith('http')) {
|
||||
const urlFragment = pageUrl.split('/')
|
||||
const origin = `${urlFragment[0]}//${urlFragment[2]}`
|
||||
pageUrl = pageUrl.replace(origin, '')
|
||||
}
|
||||
|
||||
window._hmt.push(['_setAccount', siteId])
|
||||
window._hmt.push(['_trackPageview', pageUrl])
|
||||
}
|
||||
@@ -0,0 +1,139 @@
|
||||
/**
|
||||
* Customize default theme styling by overriding CSS variables:
|
||||
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
|
||||
*/
|
||||
|
||||
/**
|
||||
* Colors
|
||||
*
|
||||
* Each colors have exact same color scale system with 3 levels of solid
|
||||
* colors with different brightness, and 1 soft color.
|
||||
*
|
||||
* - `XXX-1`: The most solid color used mainly for colored text. It must
|
||||
* satisfy the contrast ratio against when used on top of `XXX-soft`.
|
||||
*
|
||||
* - `XXX-2`: The color used mainly for hover state of the button.
|
||||
*
|
||||
* - `XXX-3`: The color for solid background, such as bg color of the button.
|
||||
* It must satisfy the contrast ratio with pure white (#ffffff) text on
|
||||
* top of it.
|
||||
*
|
||||
* - `XXX-soft`: The color used for subtle background such as custom container
|
||||
* or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
|
||||
* on top of it.
|
||||
*
|
||||
* The soft color must be semi transparent alpha channel. This is crucial
|
||||
* because it allows adding multiple "soft" colors on top of each other
|
||||
* to create a accent, such as when having inline code block inside
|
||||
* custom containers.
|
||||
*
|
||||
* - `default`: The color used purely for subtle indication without any
|
||||
* special meanings attached to it such as bg color for menu hover state.
|
||||
*
|
||||
* - `brand`: Used for primary brand colors, such as link text, button with
|
||||
* brand theme, etc.
|
||||
*
|
||||
* - `tip`: Used to indicate useful information. The default theme uses the
|
||||
* brand color for this by default.
|
||||
*
|
||||
* - `warning`: Used to indicate warning to the users. Used in custom
|
||||
* container, badges, etc.
|
||||
*
|
||||
* - `danger`: Used to show error, or dangerous message to the users. Used
|
||||
* in custom container, badges, etc.
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-c-default-1: var(--vp-c-gray-1);
|
||||
--vp-c-default-2: var(--vp-c-gray-2);
|
||||
--vp-c-default-3: var(--vp-c-gray-3);
|
||||
--vp-c-default-soft: var(--vp-c-gray-soft);
|
||||
|
||||
--vp-c-brand-1: var(--vp-c-indigo-1);
|
||||
--vp-c-brand-2: var(--vp-c-indigo-2);
|
||||
--vp-c-brand-3: var(--vp-c-indigo-3);
|
||||
--vp-c-brand-soft: var(--vp-c-indigo-soft);
|
||||
|
||||
--vp-c-tip-1: var(--vp-c-brand-1);
|
||||
--vp-c-tip-2: var(--vp-c-brand-2);
|
||||
--vp-c-tip-3: var(--vp-c-brand-3);
|
||||
--vp-c-tip-soft: var(--vp-c-brand-soft);
|
||||
|
||||
--vp-c-warning-1: var(--vp-c-yellow-1);
|
||||
--vp-c-warning-2: var(--vp-c-yellow-2);
|
||||
--vp-c-warning-3: var(--vp-c-yellow-3);
|
||||
--vp-c-warning-soft: var(--vp-c-yellow-soft);
|
||||
|
||||
--vp-c-danger-1: var(--vp-c-red-1);
|
||||
--vp-c-danger-2: var(--vp-c-red-2);
|
||||
--vp-c-danger-3: var(--vp-c-red-3);
|
||||
--vp-c-danger-soft: var(--vp-c-red-soft);
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Button
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-button-brand-border: transparent;
|
||||
--vp-button-brand-text: var(--vp-c-white);
|
||||
--vp-button-brand-bg: var(--vp-c-brand-3);
|
||||
--vp-button-brand-hover-border: transparent;
|
||||
--vp-button-brand-hover-text: var(--vp-c-white);
|
||||
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
|
||||
--vp-button-brand-active-border: transparent;
|
||||
--vp-button-brand-active-text: var(--vp-c-white);
|
||||
--vp-button-brand-active-bg: var(--vp-c-brand-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Home
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-home-hero-name-color: transparent;
|
||||
--vp-home-hero-name-background: -webkit-linear-gradient(
|
||||
120deg,
|
||||
#bd34fe 30%,
|
||||
#41d1ff
|
||||
);
|
||||
|
||||
--vp-home-hero-image-background-image: linear-gradient(
|
||||
-45deg,
|
||||
#bd34fe 50%,
|
||||
#47caff 50%
|
||||
);
|
||||
--vp-home-hero-image-filter: blur(44px);
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
:root {
|
||||
--vp-home-hero-image-filter: blur(56px);
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 960px) {
|
||||
:root {
|
||||
--vp-home-hero-image-filter: blur(68px);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Custom Block
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
:root {
|
||||
--vp-custom-block-tip-border: transparent;
|
||||
--vp-custom-block-tip-text: var(--vp-c-text-1);
|
||||
--vp-custom-block-tip-bg: var(--vp-c-brand-soft);
|
||||
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
|
||||
}
|
||||
|
||||
/**
|
||||
* Component: Algolia
|
||||
* -------------------------------------------------------------------------- */
|
||||
|
||||
.DocSearch {
|
||||
--docsearch-primary-color: var(--vp-c-brand-1) !important;
|
||||
}
|
||||
|
||||
|
Before Width: | Height: | Size: 374 KiB After Width: | Height: | Size: 374 KiB |
|
After Width: | Height: | Size: 386 KiB |
|
After Width: | Height: | Size: 68 KiB |
@@ -0,0 +1,15 @@
|
||||
# 联系我们
|
||||
|
||||
## 1. 交流群
|
||||
如有疑问,欢迎加入群聊(请备注certd)
|
||||
如有疑问,欢迎加入群聊(请备注certd)
|
||||
|
||||
| 加群 | 微信群 | QQ群 |
|
||||
|---------|-------|-------|
|
||||
| 二维码 | <img height="230" src="./images/wx.png"> | <img height="230" src="./images/qq.png"> |
|
||||
|
||||
## 2. 加作者好友
|
||||
|
||||
| 加作者好友 | 微信 QQ |
|
||||
|---------|-------------------------------------------------------------|
|
||||
| 二维码 | <img height="230" src="./images/me.png"> |
|
||||
@@ -0,0 +1,88 @@
|
||||
|
||||
# 授权插件Demo
|
||||
|
||||
```ts
|
||||
import { AccessInput, BaseAccess, IsAccess } from '@certd/pipeline';
|
||||
import { isDev } from '../../utils/env.js';
|
||||
|
||||
/**
|
||||
* 这个注解将注册一个授权配置
|
||||
* 在certd的后台管理系统中,用户可以选择添加此类型的授权
|
||||
*/
|
||||
@IsAccess({
|
||||
name: 'demo',
|
||||
title: '授权插件示例',
|
||||
icon: 'clarity:plugin-line',
|
||||
desc: '',
|
||||
})
|
||||
export class DemoAccess extends BaseAccess {
|
||||
/**
|
||||
* 授权属性配置
|
||||
*/
|
||||
@AccessInput({
|
||||
title: '密钥Id',
|
||||
component: {
|
||||
placeholder: 'demoKeyId',
|
||||
},
|
||||
required: true,
|
||||
})
|
||||
demoKeyId = '';
|
||||
|
||||
/**
|
||||
* 授权属性配置
|
||||
*/
|
||||
@AccessInput({
|
||||
//标题
|
||||
title: '密钥串',
|
||||
component: {
|
||||
//input组件的placeholder
|
||||
placeholder: 'demoKeySecret',
|
||||
},
|
||||
//是否必填
|
||||
required: true,
|
||||
//改属性是否需要加密
|
||||
encrypt: true,
|
||||
})
|
||||
//属性名称
|
||||
demoKeySecret = '';
|
||||
}
|
||||
new DemoAccess();
|
||||
```
|
||||
|
||||
|
||||
# 阿里云授权
|
||||
```ts
|
||||
|
||||
import { IsAccess, AccessInput, BaseAccess } from "@certd/pipeline";
|
||||
|
||||
@IsAccess({
|
||||
name: "aliyun",
|
||||
title: "阿里云授权",
|
||||
desc: "",
|
||||
icon: "ant-design:aliyun-outlined",
|
||||
order: 0,
|
||||
})
|
||||
export class AliyunAccess extends BaseAccess {
|
||||
@AccessInput({
|
||||
title: "accessKeyId",
|
||||
component: {
|
||||
placeholder: "accessKeyId",
|
||||
},
|
||||
helper: "登录阿里云控制台->AccessKey管理页面获取。",
|
||||
required: true,
|
||||
})
|
||||
accessKeyId = "";
|
||||
@AccessInput({
|
||||
title: "accessKeySecret",
|
||||
component: {
|
||||
placeholder: "accessKeySecret",
|
||||
},
|
||||
required: true,
|
||||
encrypt: true,
|
||||
helper: "注意:证书申请需要dns解析权限;其他阿里云插件,需要对应的权限,比如证书上传需要证书管理权限;嫌麻烦就用主账号的全量权限的accessKey",
|
||||
})
|
||||
accessKeySecret = "";
|
||||
}
|
||||
|
||||
new AliyunAccess();
|
||||
```
|
||||
@@ -1,19 +1,22 @@
|
||||
# 本地开发
|
||||
欢迎贡献插件
|
||||
|
||||
## 1.本地调试运行
|
||||
建议nodejs版本 `20.x` 及以上
|
||||
|
||||
## 一、本地调试运行
|
||||
|
||||
### 克隆代码
|
||||
```shell
|
||||
|
||||
# 克隆代码
|
||||
git clone https://github.com/certd/certd
|
||||
git clone https://github.com/certd/certd --depth=1
|
||||
|
||||
#进入项目目录
|
||||
cd certd
|
||||
|
||||
```
|
||||
|
||||
### 修改pnpm-workspace.yaml文件
|
||||
### 修改pnpm-workspace.yaml文件
|
||||
重要:否则无法正确加载专业版的access和plugin
|
||||
```yaml
|
||||
# pnpm-workspace.yaml
|
||||
@@ -25,7 +28,7 @@ packages:
|
||||
### 安装依赖和初始化:
|
||||
```shell
|
||||
# 安装pnpm,如果提示npm命令不存在,就需要先安装nodejs
|
||||
npm install -g pnpm@8.15.7 --registry=https://registry.npmmirror.com
|
||||
npm install -g pnpm--registry=https://registry.npmmirror.com
|
||||
|
||||
# 使用国内镜像源,如果有代理,就不需要
|
||||
pnpm config set registry https://registry.npmmirror.com
|
||||
@@ -33,25 +36,25 @@ pnpm config set registry https://registry.npmmirror.com
|
||||
pnpm install
|
||||
|
||||
# 初始化构建
|
||||
npm run init
|
||||
pnpm init
|
||||
```
|
||||
|
||||
### 启动 server:
|
||||
### 启动 server:
|
||||
```shell
|
||||
cd packages/ui/certd-server
|
||||
npm run dev
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
### 启动 client:
|
||||
### 启动 client:
|
||||
```shell
|
||||
cd packages/ui/certd-client
|
||||
npm run dev
|
||||
pnpm dev
|
||||
|
||||
# 会自动打开浏览器,确认正常运行
|
||||
|
||||
```
|
||||
|
||||
## 开发插件
|
||||
## 二、开发插件
|
||||
进入 `packages/ui/certd-server/src/plugins`
|
||||
|
||||
### 1.复制`plugin-demo`目录作为你的插件目录
|
||||
@@ -85,8 +88,22 @@ export * from './plugins/plugin-deploy-to-xx'
|
||||
export * from "./plugin-cloudflare.js"
|
||||
```
|
||||
|
||||
## 重启服务进行调试
|
||||
刷新浏览器,检查你的插件是否工作正常, 确保能够正常进行证书申请和部署
|
||||
### 6. 重启服务进行调试
|
||||
刷新浏览器,检查你的插件是否工作正常, 确保能够正常进行证书申请和部署
|
||||
|
||||
## 提交PR
|
||||
## 三、提交PR
|
||||
我们将尽快审核PR
|
||||
|
||||
## 四、 注意事项
|
||||
### 1. 如何让任务报错停止
|
||||
|
||||
```js
|
||||
// 抛出异常即可使任务停止,否则会判定为成功
|
||||
throw new Error("错误信息")
|
||||
```
|
||||
|
||||
|
||||
## 五、贡献插件送激活码
|
||||
|
||||
- PR要求,插件功能完整,代码规范
|
||||
- PR通过后,联系我们,送您一个半年期专业版激活码
|
||||
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 76 KiB |
|
After Width: | Height: | Size: 305 KiB |
|
After Width: | Height: | Size: 92 KiB |
@@ -0,0 +1,56 @@
|
||||
# 专业版赞助
|
||||
|
||||
## 开源为什么要做专业版收费?
|
||||
1. 纯靠为爱发电不可持续,容易烂尾(比如:我的[dev-sidecar项目](https://github.com/docmirror/dev-sidecar)即便是拥有20K+star,也差点凉凉,幸亏有另外大佬接手用爱发电)
|
||||
2. 没有赞助的项目,作者会比较任性,不会用心倾听用户的心声,不顾用户体验(比如:下意识拒绝需求、频繁破坏性变更升级、全盘推倒重来之类的)
|
||||
3. 没有赞助的项目,交流群的戾气有时候比较重,容易起冲突
|
||||
|
||||
## 赞助权益:
|
||||
1. 可加入专属VIP群,可以获得作者一对一技术支持,必要时可以远程协助
|
||||
2. 您的需求我们将优先实现,并且将作为专业版功能提供
|
||||
3. 获得专业版功能
|
||||
|
||||
****------------------****
|
||||
> [限时¥50永久专业版优惠券,点我立刻领取](https://app.handfree.work/subject/#/app/certd/product)
|
||||
|
||||
****------------------****
|
||||
## 专业版特权对比
|
||||
|
||||
| 功能 | 免费版 | 专业版 |
|
||||
|---------|---------------------------------------|--------------------------------|
|
||||
| 证书申请 | 无限制 | 无限制 |
|
||||
| 证书域名数量 | 无限制 | 无限制 |
|
||||
| 证书流水线条数 | 无限制 | 无限制 |
|
||||
| 自动部署插件 | 阿里云CDN、腾讯云、七牛CDN、主机部署、宝塔、1Panel等大部分插件 | 群晖、威联通、proxmox等 |
|
||||
| 通知 | 邮件通知、自定义webhook | 邮件免配置、企微、钉钉、飞书、anpush、server酱等 |
|
||||
| 站点监控 | 限制1条 | 无限制 |
|
||||
| 批量操作 | 无 | 流水线模版,流水线复制,批量运行,批量设置通知、定时等 |
|
||||
| VIP群 | 无 | 可加,一对一技术支持,必要时可申请远程协助 |
|
||||
|
||||
|
||||
## 专业版激活方式
|
||||
|
||||

|
||||
|
||||
|
||||
## 相关问题
|
||||
|
||||
### 1. 购买后VIP状态或时长未更新
|
||||
系统管理-->账号绑定页面,打开一下即可自动更新VIP最新状态(如果未登录袖手账号需要先登录)
|
||||
|
||||

|
||||
|
||||
|
||||
### 2. 开发票
|
||||
联系我们(微信:xiaojunnuo),并提供支付金额
|
||||
|
||||
### 3. VIP是否可以迁移换绑服务器?
|
||||
可以的。
|
||||
* 方式1. 直接将备份数据在新服务器上还原即可(首次访问会提示您是否绑定新url,点击是即可)
|
||||
* 方式2. 如果旧站点数据丢失,您也可以部署一个新站点,然后在系统管理-->账号绑定页面,转移VIP即可
|
||||
|
||||

|
||||
|
||||
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 172 KiB After Width: | Height: | Size: 172 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 200 KiB After Width: | Height: | Size: 200 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
@@ -0,0 +1,41 @@
|
||||
# CNAME代理校验方式
|
||||
|
||||
通过CNAME代理校验方式,可以给`Certd`不支持的域名服务商的域名申请证书。
|
||||
|
||||
## 1. 前言
|
||||
* 申请证书是需要`校验域名所有权`的。
|
||||
* `DNS校验方式`需要开发适配DNS服务商的接口
|
||||
* 目前`Certd`已实现`主流域名注册商`的接口(阿里云、腾讯云、华为云、Cloudflare、西数)
|
||||
* 如果域名不在这几家,`DNS校验方式`就行不通
|
||||
* 那么就只能通过`CNAME代理校验方式`来实现`证书自动申请`
|
||||
|
||||
## 2. 原理
|
||||
* 假设你要申请证书的域名叫:`cert.com` ,它是在`Certd`不支持的服务商注册的
|
||||
* 假设我们还有另外一个域名叫:`proxy.com`,它是在`Certd`支持的服务商注册的。
|
||||
* 当我们按照如下进行配置时
|
||||
```
|
||||
CNAME记录(手动、固定) TXT记录(自动、随机)
|
||||
_acme-challenge.cert.com ---> xxxxx.cname.proxy.com ----> txt-record-abcdefg
|
||||
|
||||
```
|
||||
* 证书颁发机构就可以从`_acme-challenge.cert.com`查到TXT记录 `txt-record-abcdefg`,从而完成域名所有权校验。
|
||||
* 以上可以看出 `xxxxx.cname.proxy.com ----> txt-record-abcdefg` 这一段`Certd` 是可以自动添加的。
|
||||
* 剩下的只需要在你的`cert.com`域名中手动添加一条固定的`CNAME解析`即可
|
||||
|
||||
|
||||
## 3. Certd CNAME使用步骤
|
||||
|
||||
|
||||
1. 创建证书流水线,输入你要申请证书的域名,假设就是`cert.com`,然后选择`CNAME`校验方式
|
||||
2. 此时需要配置验证计划,Certd会生成一个随机的CNAME记录模版,例如:`_acme-challenge`->`xxxxxx.cname.proxy.com`
|
||||

|
||||
3. 您需要手动在你的`cert.com`域名中添加CNAME解析,点击验证,校验成功后就可以开始申请证书了 (此操作每个域名只需要做一次,后续可以重复使用,注意不要删除添加的CNAME记录)
|
||||

|
||||

|
||||
4. 申请过程中,Certd会在`xxxxxx.cname.proxy.com`下自动添加TXT记录。
|
||||
5. 到此即可自动化申请证书了
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
@@ -0,0 +1,27 @@
|
||||
# 站点隐藏
|
||||
|
||||
* 一般来说Certd设置好之后,很少需要访问。
|
||||
* 所以我们`平时`可以把`站点访问关闭`,需要的时候再打开,减少站点被攻击的风险
|
||||
|
||||
## 1、开启站点隐藏
|
||||
`系统管理->系统设置->安全设置->站点隐藏 `
|
||||
|
||||
|
||||

|
||||
|
||||
:::warning
|
||||
|
||||
注意保存好`解除地址`和`解除密码`
|
||||
|
||||
:::
|
||||
|
||||
## 2、临时关闭站点隐藏
|
||||
|
||||
访问上面的`解除地址`,输入`解除密码`,`临时解除`站点隐藏
|
||||
|
||||

|
||||
|
||||
## 3、忘记解除地址和解除密码怎么办
|
||||
登录服务器,在数据库平级的目录下创建`.unhidden`命名的空白文件,即可临时解除站点隐藏
|
||||
临时解除后会自动删除`.unhidden`文件,请尽快设置好新的`解除地址`和`解除密码`,并记住
|
||||
|
||||
|
After Width: | Height: | Size: 70 KiB |
|
After Width: | Height: | Size: 20 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 20 KiB |
@@ -0,0 +1,49 @@
|
||||
# 安全特性
|
||||
|
||||
Certd 存储了证书以及授权等敏感数据,所以需要严格保障安全。
|
||||
我们提供了以下安全特性,以及安全生产建议(请遵照建议进行生产部署以保障数据安全)
|
||||
|
||||
## 一、站点安全特性
|
||||
|
||||
### 1、 授权数据加密存储【默认开启】
|
||||
* 所有的授权敏感字段会加密后存储
|
||||
* 每个用户独立维护授权数据,连管理员都无权查看
|
||||
|
||||

|
||||
星号部分为加密数据
|
||||
|
||||
### 2、 密码防爆破【默认开启】
|
||||
* 登录失败次数过多,账号将被锁定,最高24小时(重启服务可解除锁定)
|
||||
* 用户登录密码加密hash后存储,无法计算出密码明文
|
||||

|
||||
|
||||
### 3、站点隐藏【建议开启】
|
||||
* 一般来说Certd设置好之后,后续很少需要访问修改。
|
||||
* 所以我们平时可以把站点访问关闭,需要的时候再打开,减少站点被攻击的风险
|
||||
* 请前往 `系统管理->系统设置->安全设置->开启站点隐藏`
|
||||

|
||||
|
||||
点击查看 [站点隐藏功能详细使用说明](./hidden/)
|
||||
|
||||
|
||||
### 4、登录双重验证
|
||||
|
||||
支持2FA双重认证
|
||||
|
||||

|
||||
|
||||
### 5、数据库自动备份【建议开启】
|
||||
* [自动备份设置说明](../../use/backup/)
|
||||
|
||||
|
||||
## 二、安全生产建议
|
||||
|
||||
尽管`Cert`本身实现了很多安全特性,但`外部环境的安全`仍需要您来确保。
|
||||
请`务必`遵循如下建议做好安全防护
|
||||
|
||||
* 请`务必`使用`HTTPS协议`访问本应用,避免被中间人攻击
|
||||
* 请`务必`使用`web应用防火墙`防护本应用,防止XSS、SQL注入等攻击
|
||||
* 请`务必`做好`服务器本身`的安全防护,防止数据库泄露
|
||||
* 请`务必`做好[`数据备份`](../../use/backup/),避免数据丢失
|
||||
* 请`务必`修改管理员账号用户名,且建议将admin注册为普通用户,且设置为禁用。
|
||||
* 建议开启[`站点隐藏`](./hidden/)功能
|
||||
@@ -0,0 +1,20 @@
|
||||
# 镜像说明
|
||||
## 国内镜像地址:
|
||||
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest`
|
||||
* `registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7`、`[version]-armv7`
|
||||
|
||||
## DockerHub地址:
|
||||
* `https://hub.docker.com/r/greper/certd`
|
||||
* `greper/certd:latest`
|
||||
* `greper/certd:armv7`、`greper/certd:[version]-armv7`
|
||||
|
||||
## GitHub Packages地址:
|
||||
* `ghcr.io/certd/certd:latest`
|
||||
* `ghcr.io/certd/certd:armv7`、`ghcr.io/certd/certd:[version]-armv7`
|
||||
*
|
||||
## 镜像构建公开
|
||||
镜像构建通过`Actions`自动执行,过程公开透明,请放心使用
|
||||
* [点我查看镜像构建日志](https://github.com/certd/certd/actions/workflows/build-image.yml)
|
||||
|
||||

|
||||
@@ -0,0 +1,44 @@
|
||||
# Certd
|
||||
|
||||
Certd 是一款开源、免费、全自动申请和部署更新SSL证书的工具。
|
||||
后缀d取自linux守护进程的命名风格,意为证书守护进程。
|
||||
|
||||
关键字:证书自动申请、证书自动更新、证书自动续期、证书自动续签、证书管理工具
|
||||
|
||||
|
||||
| 官方开源地址: | |
|
||||
| ---- | ---- |
|
||||
| [Github](https://github.com/certd/certd)|  |
|
||||
| [Gitee](https://gitee.com/certd/certd) |  |
|
||||
| [AtomGit](https://atomgit.com/certd/certd) | |
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## 1、关于证书续期
|
||||
>* 实际上没有办法不改变证书文件本身情况下直接续期或者续签。
|
||||
>* 我们所说的续期,其实就是按照全套流程重新申请一份新证书,然后重新部署上去。
|
||||
>* 免费证书过期时间90天,以后可能还会缩短,所以自动化部署必不可少
|
||||
|
||||
|
||||
## 2、项目特性
|
||||
本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。
|
||||
|
||||
* 全自动申请证书(支持所有注册商注册的域名,支持DNS-01、HTTP-01、CNAME代理等多种域名验证方式)
|
||||
* 全自动部署更新证书(目前支持部署到主机、阿里云、腾讯云等100+部署插件)
|
||||
* 支持通配符域名/泛域名,支持多个域名打到一个证书上,支持pem、pfx、der、jks等多种证书格式
|
||||
* 邮件通知、webhook通知、企微、钉钉、飞书、anpush等多种通知方式
|
||||
* 私有化部署,数据保存本地,安装升级非常简单快捷
|
||||
* 镜像由Github Actions构建,过程公开透明
|
||||
* 授权加密,站点隐藏,2FA,密码防爆破等多重安全保障
|
||||
* 支持SQLite,PostgreSQL、MySQL多种数据库
|
||||
* 开放接口支持
|
||||
* 站点证书监控
|
||||
* 多用户管理
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"notice": "永久专业版上线,新用户立减50,升级到最新版点击下方“立即赞助”按钮前往获取",
|
||||
"plus": {
|
||||
"name": "专业版",
|
||||
"price": "89.9",
|
||||
"price3": "199",
|
||||
"tooltip": "开源需要您的赞助支持",
|
||||
"priceText":"¥89.9/年",
|
||||
"discountText":"永久专业版50优惠券立即领取"
|
||||
},
|
||||
"comm": {
|
||||
"name": "商业版",
|
||||
"price": "399",
|
||||
"price3": "899",
|
||||
"tooltip": "3年优惠300",
|
||||
"priceText":"¥399/年",
|
||||
"discountText":"¥899/3年(3年优惠300)"
|
||||
},
|
||||
"app":{
|
||||
"minVersion":"1.36.0",
|
||||
"minVersionTip":"版本过低,为了您的数据安全,请尽快升级"
|
||||
}
|
||||
|
||||
}
|
||||
|
After Width: | Height: | Size: 63 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 13 KiB |
@@ -0,0 +1,78 @@
|
||||
# 部署到1Panel面板
|
||||
|
||||
|
||||
## 一、安装1Panel
|
||||
|
||||
https://1panel.cn/docs/installation/online_installation/
|
||||
|
||||
## 二、部署certd
|
||||
|
||||
有两种安装方式
|
||||
|
||||
### 1. 应用商店方式安装【推荐】
|
||||
|
||||
#### 1.1 安装
|
||||
打开`1Panel->应用商店`,更新远程应用,搜索`certd`,点击安装
|
||||
|
||||

|
||||
|
||||
|
||||

|
||||
|
||||
#### 1.2 访问测试:
|
||||
http://ip:7001
|
||||
https://ip:7002
|
||||
默认账号密码
|
||||
admin/123456
|
||||
登录后请及时修改密码
|
||||
|
||||
#### 1.3 备份
|
||||

|
||||
|
||||
#### 1.4 恢复
|
||||
安装新Certd后,点击导入备份按钮,选择上面备份的文件即可
|
||||
|
||||
|
||||
|
||||
### 2. docker-compose方式安装
|
||||
|
||||
#### 2.1 安装
|
||||
1. 打开`docker-compose.yaml`,整个内容复制下来
|
||||
https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
|
||||
|
||||
|
||||
2. 然后到 `1Panel->容器->编排->新建编排`
|
||||
输入名称,粘贴`docker-compose.yaml`原文内容
|
||||

|
||||
|
||||
3. 点击确定,启动容器
|
||||

|
||||
|
||||
> 默认使用sqlite数据库,数据保存在`/data/certd`目录下,您可以手动备份该目录
|
||||
> certd还支持`mysql`和`postgresql`数据库,[点我了解如何切换其他数据库](../database)
|
||||
|
||||
#### 2.2 访问测试
|
||||
|
||||
http://ip:7001
|
||||
https://ip:7002
|
||||
默认账号密码
|
||||
admin/123456
|
||||
登录后请及时修改密码
|
||||
|
||||
#### 2.3 升级
|
||||
|
||||
1. 找到容器,点击更多->升级
|
||||

|
||||
|
||||
2. 选择强制拉取镜像,点击确认即可
|
||||

|
||||
|
||||
|
||||
#### 2.4 备份
|
||||
|
||||
> 默认数据保存在`/data/certd`目录下,可以手动备份
|
||||
> 建议配置一条 [数据库备份流水线](../../use/backup/),自动备份
|
||||
|
||||
#### 2.5 恢复
|
||||
|
||||
将备份的`db.sqlite`及同目录下的其他文件一起覆盖到原来的位置,重启certd即可
|
||||
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 40 KiB |
|
After Width: | Height: | Size: 8.4 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 82 KiB |
|
After Width: | Height: | Size: 32 KiB |
@@ -0,0 +1,87 @@
|
||||
# 部署到宝塔面板
|
||||
|
||||
|
||||
## 一、安装
|
||||
宝塔面板支持两种方式安装Certd,请选择其中一种方式
|
||||
|
||||
### 1、安装宝塔面板
|
||||
|
||||
* 安装宝塔面板,前往 [宝塔面板](https://www.bt.cn/u/CL3JHS) 官网,选择`9.2.0`以上正式版的脚本下载安装
|
||||
* 登录宝塔面板,在菜单栏中点击 Docker,首次进入会提示安装Docker服务,点击立即安装,按提示完成安装
|
||||
|
||||
### 2、部署certd
|
||||
以下两种方式任选一种:
|
||||
|
||||
#### 2.1 应用商店方式一键部署【推荐】
|
||||
|
||||
* 在宝塔Docker应用商店中找到`certd`(要先点右上角更新应用)
|
||||
* 点击安装,配置域名等基本信息即可完成安装
|
||||
|
||||
> 需要宝塔9.2.0及以上版本才支持
|
||||
|
||||
#### 2.2 容器编排方式部署
|
||||
|
||||
1. 打开`docker-compose.yaml`,整个内容复制下来
|
||||
https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
|
||||
|
||||
|
||||
然后到宝塔里面进到docker->容器编排->添加容器编排
|
||||

|
||||
点击确定,等待启动完成
|
||||

|
||||
|
||||
> certd默认使用sqlite数据库,另外支持`mysql`和`postgresql`数据库,[点我了解如何切换其他数据库](../database)
|
||||
|
||||
|
||||
## 二、访问应用
|
||||
|
||||
http://ip:7001
|
||||
https://ip:7002
|
||||
默认账号密码
|
||||
admin/123456
|
||||
登录后请及时修改密码
|
||||
|
||||
## 三、如何升级
|
||||
宝塔升级certd非常简单
|
||||
|
||||
打开容器页面: `docker`->`容器编排`->`左侧选择Certd`->`更新镜像`
|
||||
|
||||

|
||||
|
||||
|
||||
## 四、数据备份
|
||||
|
||||
部署方式不同,数据保存位置不同
|
||||
|
||||
### 4.1 应用商店部署方式
|
||||
点击进入安装路径,数据保存在`./data`目录下,可以手动备份
|
||||
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
### 4.2 容器编排部署方式
|
||||
|
||||
数据默认保存在`/data/certd`目录下,可以手动备份
|
||||
|
||||
|
||||
### 4.3 自动备份
|
||||
|
||||
> 建议配置一条 [数据库备份流水线](../../use/backup/),自动备份
|
||||
|
||||
## 五、备份恢复
|
||||
|
||||
将备份的`db.sqlite`及同目录下的其他文件一起覆盖到原来的位置,重启certd即可
|
||||
|
||||
|
||||
## 六、宝塔部署相关问题排查
|
||||
|
||||
### 1. 无法访问Certd
|
||||
1. 确认服务器的安全规则,是否放开了对应端口
|
||||
2. 确认宝塔防火墙是否放开对应端口
|
||||
3. 尝试将Certd容器加入宝塔的`bridge`网络
|
||||

|
||||
|
||||
### 2. 动态IP无法加白名单问题
|
||||
[Nginx代理解决方案](../../use/baota/white_list.md)
|
||||
@@ -0,0 +1,118 @@
|
||||
# 切换数据库
|
||||
|
||||
certd支持如下几种数据库:
|
||||
1. sqlite3 (默认)
|
||||
2. mysql
|
||||
3. postgresql
|
||||
|
||||
您可以按如下两种方式切换数据库
|
||||
|
||||
|
||||
## 一、全新安装
|
||||
::: tip
|
||||
以下按照`docker-compose`安装方式介绍如何使用mysql或postgresql数据库
|
||||
如果您使用其他方式部署,请自行修改对应的环境变量即可。
|
||||
:::
|
||||
|
||||
### 1.1、使用mysql数据库
|
||||
|
||||
1. 安装mysql,创建数据库 `(注意:charset=utf8mb4, collation=utf8mb4_bin)`
|
||||
2. 下载最新的docker-compose.yaml
|
||||
3. 修改环境变量配置
|
||||
```yaml
|
||||
services:
|
||||
certd:
|
||||
environment:
|
||||
# 使用mysql数据库,需要提前创建数据库 charset=utf8mb4, collation=utf8mb4_bin
|
||||
- certd_flyway_scriptDir=./db/migration-mysql # 升级脚本目录 【照抄】
|
||||
- certd_typeorm_dataSource_default_type=mysql # 数据库类型, 或者 mariadb
|
||||
- certd_typeorm_dataSource_default_host=localhost # 数据库地址
|
||||
- certd_typeorm_dataSource_default_port=3306 # 数据库端口
|
||||
- certd_typeorm_dataSource_default_username=root # 用户名
|
||||
- certd_typeorm_dataSource_default_password=yourpasswd # 密码
|
||||
- certd_typeorm_dataSource_default_database=certd # 数据库名
|
||||
|
||||
```
|
||||
4. 启动certd
|
||||
```shell
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
|
||||
### 1.2、使用Postgresql数据库
|
||||
|
||||
1. 安装postgresql,创建数据库
|
||||
2. 下载最新的docker-compose.yaml
|
||||
3. 修改环境变量配置
|
||||
```yaml
|
||||
services:
|
||||
certd:
|
||||
environment:
|
||||
# 使用postgresql数据库,需要提前创建数据库
|
||||
- certd_flyway_scriptDir=./db/migration-pg # 升级脚本目录 【照抄】
|
||||
- certd_typeorm_dataSource_default_type=postgres # 数据库类型 【照抄】
|
||||
- certd_typeorm_dataSource_default_host=localhost # 数据库地址
|
||||
- certd_typeorm_dataSource_default_port=5433 # 数据库端口
|
||||
- certd_typeorm_dataSource_default_username=postgres # 用户名
|
||||
- certd_typeorm_dataSource_default_password=yourpasswd # 密码
|
||||
- certd_typeorm_dataSource_default_database=certd # 数据库名
|
||||
|
||||
```
|
||||
4. 启动certd
|
||||
```shell
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
## 二、从旧版的sqlite切换数据库
|
||||
|
||||
从旧版`sqlite`迁移到`mysql`或`postgresql`数据库
|
||||
|
||||
下面以 `SQLite` 转 `MySQL` 为例进行演示
|
||||
|
||||

|
||||
|
||||
#### 0.前提条件:
|
||||
1. SQLite版Certd站点已经`升级到最新版` (`建议:备份sqlite数据库` )
|
||||
2. `全新安装`MySQL版本Certd(`确保是全新的,因为里面的数据会被清空覆盖`)
|
||||
3. 两套Certd站点版本一致
|
||||
|
||||
#### 1. 安装DBeaver工具
|
||||
|
||||
[https://dbeaver.io/download/](https://dbeaver.io/download/)
|
||||
|
||||

|
||||
|
||||
#### 2. 连接到sqlite数据库
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### 3. 连接到mysql或postgresql数据库
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
#### 4. 开始同步数据
|
||||
|
||||
选择mysql数据库,选择所有的表(`flyway_history除外`),右键导入数据
|
||||
|
||||
> 切记flyway_history数据表不要导入
|
||||
|
||||

|
||||

|
||||

|
||||
下一步、下一步,直到数据加载设置,勾选`在加载前截断目标表`(此选项很重要,并且会清空mysql certd数据库中的数据)
|
||||

|
||||
|
||||
#### 5. 导入完成
|
||||
|
||||

|
||||
|
||||
#### 6. 重启MySQL版本Certd
|
||||
|
||||
访问MySQL版本测试,数据已成功迁移
|
||||
|
||||
确认没有问题之后,删除旧版certd
|
||||
@@ -0,0 +1,85 @@
|
||||
# Docker方式部署
|
||||
|
||||
## 一、安装
|
||||
|
||||
### 1. 环境准备
|
||||
|
||||
1.1 准备一台云服务器
|
||||
|
||||
* 【阿里云】云服务器2核2G,新老用户同享,99元/年,续费同价!【 [立即购买](https://www.aliyun.com/benefit?scm=20140722.M_10244282._.V_1&source=5176.11533457&userCode=qya11txb )】
|
||||
* 【腾讯云】云服务器2核2G,新老用户同享,99元/年,续费同价!【 [立即购买](https://cloud.tencent.com/act/cps/redirect?redirect=6094&cps_key=b3ef73330335d7a6efa4a4bbeeb6b2c9&from=console)】
|
||||
|
||||
1.2 安装docker、docker-compose
|
||||
|
||||
https://docs.docker.com/engine/install/
|
||||
|
||||
选择对应的操作系统,按照官方文档执行命令即可
|
||||
|
||||
### 2. 部署certd容器
|
||||
|
||||
```bash
|
||||
# 随便创建一个目录
|
||||
mkdir certd
|
||||
# 进入目录
|
||||
cd certd
|
||||
# 下载docker-compose.yaml文件,或者手动下载放到certd目录下
|
||||
wget https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml
|
||||
|
||||
# 可以根据需要修改里面的配置
|
||||
# 1.修改镜像版本号【可选】
|
||||
# 2.配置数据保存路径【可选】
|
||||
# 3.修改端口号【可选】
|
||||
vi docker-compose.yaml # 【可选】
|
||||
|
||||
# 启动certd
|
||||
docker compose up -d
|
||||
|
||||
```
|
||||
|
||||
> [手动下载docker-compose.yaml ](https://gitee.com/certd/certd/raw/v2/docker/run/docker-compose.yaml)
|
||||
> 当前版本号: 
|
||||
|
||||
> 如果提示 没有docker compose命令,请安装docker-compose
|
||||
> https://docs.docker.com/compose/install/linux/
|
||||
|
||||
> certd默认使用sqlite数据库,另外还支持`mysql`和`postgresql`数据库,[点我了解如何切换其他数据库](../database)
|
||||
|
||||
|
||||
### 3. 访问测试
|
||||
|
||||
http://your_server_ip:7001
|
||||
https://your_server_ip:7002
|
||||
默认账号密码:admin/123456
|
||||
记得修改密码
|
||||
|
||||
|
||||
## 二、升级
|
||||
|
||||
::: warning
|
||||
如果您是第一次升级certd版本,切记切记先备份一下数据
|
||||
```
|
||||
# docker-compose.yaml配置
|
||||
- /data/certd:/app/data # 请务必确保 /app/data 这个路径没有改动,固定写死
|
||||
```
|
||||
:::
|
||||
|
||||
|
||||
### 如果使用固定版本号
|
||||
1. 修改`docker-compose.yaml`中的镜像版本号
|
||||
2. 运行`docker compose up -d` 即可
|
||||
|
||||
### 如果使用`latest`版本
|
||||
```shell
|
||||
#重新拉取镜像
|
||||
docker pull registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
|
||||
# 重新启动容器
|
||||
docker compose down
|
||||
docker compose up -d
|
||||
```
|
||||
## 三、数据备份
|
||||
> 数据默认存在`/data/certd`目录下,不用担心数据丢失
|
||||
> 建议配置一条[数据库备份流水线](../../use/backup/) 自动备份
|
||||
|
||||
## 四、备份恢复
|
||||
|
||||
将备份的`db.sqlite`及同目录下的其他文件一起覆盖到原来的位置,重启certd即可
|
||||
|
After Width: | Height: | Size: 74 KiB |
|
After Width: | Height: | Size: 134 KiB |
|
After Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 194 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 157 KiB |
|
After Width: | Height: | Size: 187 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 145 KiB |
|
After Width: | Height: | Size: 28 KiB |